赋值前引用局部变量 django 错误

unk*_*own 4 python django django-models django-forms django-views

这是我的 view.py,当我有一个表单,当我使用必填字段提交时,它会给出适当的输出,但是当我不在表单中输入任何内容并单击“提交”时,我会收到一条错误消息“局部变量‘researcher’”分配之前引用”。

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

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})
Run Code Online (Sandbox Code Playgroud)

我在源页面上的表单是

<form action="{% url 'lazer.views.about_experiment' exp.link_name %}" method="POST" name="form"> 
  {% csrf_token %}
      <label>Researcher Name(s):<input type="text" name="researcher">
    <lable>Study Summary<textarea rows="10" cols="50" placeholder="here you go" maxlength="500" class="form-control" name="study"></textarea>
      <br>
      <input type = "submit" value="Submit" class="btn btn-primary" />
  </form>
Run Code Online (Sandbox Code Playgroud)

我的目标页面,其中存在表单输出

<h4> Name : {{ researcher }} </h4><br>
<h4> Summary : {{ study }} </h4>
Run Code Online (Sandbox Code Playgroud)

Nee*_*mar 8

在views.py的其他部分中,您提到了渲染方法中的研究人员变量,该变量产生了此错误。

所以请添加

researcher = None
Run Code Online (Sandbox Code Playgroud)

在 if 语句之前

并且还添加

study = None
Run Code Online (Sandbox Code Playgroud)

这也会产生同样的错误

表格.py

from django import forms
from .models import AboutHelp

    class AboutHelpForm(forms.ModelForm):
        class Meta:
            model = AboutHelp
            fields = '__all__'
Run Code Online (Sandbox Code Playgroud)

视图.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})
Run Code Online (Sandbox Code Playgroud)