如何从表单获取数据并将其存储在django中的变量中

时间:2020-10-17 07:01:57

标签: django django-forms django-views get

这是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方法从表单中获取数据吗?我会很感激的。我不知道现在该怎么办......

1 个答案:

答案 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后缀。