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)
在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)
| 归档时间: |
|
| 查看次数: |
18886 次 |
| 最近记录: |