我是Django和Web开发的新手。现在我的目标是创建一个像谷歌一样的界面,从搜索框中取出文本并将其写入文件(换句话说,只是想在搜索框中访问文本数据)。我创建了一个如下所示的搜索页面
search.html
{% extends "header.html" %}
{% block content %}
<div style="display: flex; justify-content: center;">
<img src="/static/images/logo.jpg" class="responsive-img" style='max-height:300px;' alt="face" >
</div>
<form method="get" action="">
{% csrf_token %}
<div style="display: flex; justify-content: center;">
<input type="text" name="query" placeholder="Search here..." required size="70" >
<button type="submit">Go!</button>
</div>
<button type="submit">Search</button>
</form>
{% endblock %}
views.py
from django.shortcuts import render
def index(request):
return render(request, 'search.html')
urls.py
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$', views.index, name='index')
]
请给我一个如何从这里前进的提示/示例?感谢。
答案 0 :(得分:1)
您的搜索字段如下所示:
<input type="text" name="query">
输入的名称为query
。由于它是一个GET表单,当你提交它时,你一定注意到了,网址看起来像这样:
/?query=<value of the input>
?
之后的部分称为查询字符串。对于每个请求,Django都维护着一个查询字符串的字典。 request
对象有一个名为GET
的字典用于GET请求。如果你发出POST请求,Django会将表单数据保存在名为POST
的dict中。
要在Django中访问请求查询字符串的值,您可以这样做:
query = request.GET.get('query')
如果是POST请求,您可以这样做,但这次使用POST
词典:
some_value = request.POST.get('some_key')
有关此问题的完整文档可在 - Request and response objects找到。
答案 1 :(得分:1)
这应该这样做
<强> views.py 强>
def index(request):
query = request.GET.get('query')
# do a check here to make sure search_term exists before attempting write
with open('/path/to/file', 'rw') as f:
f.write(query)
return render(request, 'search.html')