这是views.py中的表单类:
class SearchForm(forms.Form):
query = forms.CharField(label='Search', max_length=10)
该表单将添加为以下相关页面:
<form action="/encyclopedia/search.html" method="get">
<input class="search" type="text" name="q" placeholder="Search Encyclopedia">
{{ form }}
</form>
我试图通过两种方式实现视图功能: 首先:-
def search(request):
form = SearchForm(request.GET)
if form.is_valid():
query = form.cleaned_data['query']
else:
query = None
return HttpResponse(query)
秒:-
def search(request):
form = SearchForm(request.GET)
query = request.GET.get("query")
return HttpResponse(query)
给定的HttpResponse只是为了检查我是否已成功在变量“ query”中获取所需的数据。两种方式都只返回None。 我看到了从Internet上的POST获取数据的方法。我在这里想念什么吗??? 我已经尝试了很多东西。 有人可以只写一个函数,使用GET方法从表单中获取数据吗?我会很感激的。我不知道现在该怎么办......
答案 0 :(得分:1)
参数名称为q
,因为HTML组件为:
<input … name="q" … >
因此,您可以通过以下方式访问它:
def search(request):
query = request.GET.get('q')
return HttpResponse(query)
或者您可以使用Form
:
class SearchForm(forms.Form):
q = forms.CharField(label='Search', max_length=10)
并与之合作:
def search(request):
form = SearchForm(request.GET)
if form.is_valid():
query = form.cleaned_data['q']
else:
query = None
return HttpResponse(query)
注意:如section on Design your urls中所述。
Django鼓励使用精美的URL设计,并且不要在URL中添加任何残篇,例如.php或.asp。
因此,您可能希望删除路径中的.html
后缀。