Python Django views.py:无法使用vriable外部函数
我希望在填写django表单时打开一个新页面-通过点击enter/点击“搜索”输入,并使用表单中输入的数据在该页面中显示结果 forms.py: 带有表单的HTML页面如下所示: index.html 我已通过Python Django views.py:无法使用vriable外部函数,python,html,django,django-views,django-forms,Python,Html,Django,Django Views,Django Forms,我希望在填写django表单时打开一个新页面-通过点击enter/点击“搜索”输入,并使用表单中输入的数据在该页面中显示结果 forms.py: 带有表单的HTML页面如下所示: index.html 我已通过表单1提取了在中输入的数据。已清理的数据['Search'] form_input=form1.cleaned_data['Search'] 但是,一旦打开结果页面,它就会显示数据(form_输入)未定义。 显示以下错误: name 'form_input' is not defined
表单1提取了在中输入的数据。已清理的数据['Search']
form_input=form1.cleaned_data['Search']
但是,一旦打开结果页面,它就会显示数据(form_输入)未定义。
显示以下错误:
name 'form_input' is not defined
我无法在views.py
文件的任何其他函数中使用此数据(表单输入)
views.py
我不明白为什么会这样。我甚至将变量
form\u input
声明为全局变量。您必须执行以下操作:
<form action={% url 'search_view' %} method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Search</button>
</form>
{% for item in search_result %}
{{ i.name }}
{% endfor %}
search_results = User.objects.filter(name__contains=form_input)
视图.py
from . forms import SearchBar
def search_view(request):
if request.method == "POST":
form = SearchBar(request.POST)
if form.is_valid():
form_input = form.cleaned_data['Search']
search_result = # your search query using the form_input variable
return render(request, "result.html", {"search_result ": search_result })
如果我完全理解,您希望在base.html(所有其他模板继承自的基本模板)中设置搜索栏,那么在模板中搜索栏的位置,请编写如下内容:
<form action={% url 'search_view' %} method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Search</button>
</form>
{% for item in search_result %}
{{ i.name }}
{% endfor %}
search_results = User.objects.filter(name__contains=form_input)
更新
很明显,搜索栏的目的是过滤和显示给定模型的对象,例如,如果您有一个用户
模型:
class User(models.Model):
name = models.CharField(max_length=50)
is_active = models.BooleanField(default=True)
并希望根据您的user.name
筛选对象,则代码行将如下所示:
<form action={% url 'search_view' %} method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Search</button>
</form>
{% for item in search_result %}
{{ i.name }}
{% endfor %}
search_results = User.objects.filter(name__contains=form_input)
例如,如果您有3个名为Tom Jablinski、Tommy Joe和Jack White(例如)的用户,并搜索Tom,您将得到一个包含2个用户对象的查询集:Tom Jablinski和Tommy Joe,它们将显示在result.html
temaple中。您所说的是什么意思“search_result=#使用表单_输入变量的搜索查询”?是的,情况也是如此。我已更新了答案:)