Python Django views.py:无法使用vriable外部函数

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

我希望在填写django表单时打开一个新页面-通过点击enter/点击“搜索”输入,并使用表单中输入的数据在该页面中显示结果

forms.py:

带有表单的HTML页面如下所示:

index.html

我已通过
表单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=#使用表单_输入变量的搜索查询”?是的,情况也是如此。我已更新了答案:)