赋值djang之前引用的局部变量

2024-10-01 13:33:15 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的视图.py当我有一个表单,当我提交了所需的字段时,它会给出一个适当的输出,但是当我没有在表单中输入任何内容并单击submit时,我会得到一个错误消息:“赋值前引用了局部变量‘research’”。在

我还想知道如何将表单数据保存在目标页面上

def about_experiment(request,ex_link_name):

    if request.method == 'POST':
        form = AboutHelp(request.POST)
        if form.is_valid():
            researcher = form.cleaned_data['researcher']
            study = form.cleaned_data['study']

    else:
        form = AboutHelp()
    return render(request, 'about_experiment.html', {'researcher': researcher, 'study': study})

我在源页面上的表单是

^{pr2}$

表单输出所在的目标页面

<h4> Name : {{ researcher }} </h4><br>
<h4> Summary : {{ study }} </h4>

Tags: form表单目标dataifrequest页面post
2条回答

在其他部分视图.py您在render方法中提到了产生此错误的research变量。在

所以请补充

researcher = None

if语句之前

并添加

^{pr2}$

这也会产生同样的错误

表单.py

from django import forms
from .models import AboutHelp

    class AboutHelpForm(forms.ModelForm):
        class Meta:
            model = AboutHelp
            fields = '__all__'

视图.py

def about_experiment(request,ex_link_name):
    researcher = None 
    study = None
    form = AboutHelpForm(request.POST or None)
    if request.method == 'POST':
        if form.is_valid():
            form.save()
    return render(request, 'about_experiment.html', {'researcher': researcher, 'study': study})

如果请求方法不是POST并且表单无效,则researcher和{}不是赋值。您应该在if语句之前定义此变量:

def about_experiment(request,ex_link_name):
    researcher = ''
    study = ''
    if request.method == 'POST':
    ...  

相关问题 更多 >