Python 赋值前引用的局部变量“routingForm”
我正在尝试提交表单,但在分配之前引用了errorlocal变量“routingForm”。请帮助我解决此问题 *****forms.py*****Python 赋值前引用的局部变量“routingForm”,python,django,Python,Django,我正在尝试提交表单,但在分配之前引用了errorlocal变量“routingForm”。请帮助我解决此问题 *****forms.py***** from django import forms class routingForm(forms.Form): areaDigit = forms.CharField(label='areaDigit', max_length=100) product = forms.CharField(label='product', ma
from django import forms
class routingForm(forms.Form):
areaDigit = forms.CharField(label='areaDigit', max_length=100)
product = forms.CharField(label='product', max_length=100)
*****views.py*****
from django.shortcuts import render
from .forms import routingForm
# Create your views here.
from django.http import HttpResponse,HttpResponseRedirect
from .models import Product,Routing_Dest_Area
def get_route_list(request):
#areaDigit= request.POST.get('areaDigit', False)
#data=Routing_Dest_Area.objects.filter(areaDigit_pk=request.POST['areaDigit'])
if request.method == "POST":
#Get the posted form
routingForm = routingForm(request.POST)
if routingForm.is_valid():
areaDigit = routingForm.cleaned_data['areaDigit']
else:
MyLoginForm = routingForm()
return render(request, 'routing/test.html',{'areaDigit':areaDigit})
*****home.html*****
<form method="POST" action="{% url 'get_route_list'%}" id="routingForm" name="routingForm">
{% csrf_token %}
<div class="form-content">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<input type="text" class="form-control" placeholder="Area String *"
name"areaDigit" id="areaDigit" value="{{areaDigit}}"/>
</div>
</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label for="sel1">Select list (select one):</label>
<select class="form-control" id="Product" name="product">
<option> 1</option>
<option> 21</option>
</select>
</div>
</div>
</div>
<button type="submit" class="btnSubmit">Submit</button>
您不能写入routingForm=routingFormrequest.POST,因为这会使routingForm成为局部变量,并且在赋值之前使用它
但是,我强烈建议您使用PerlCase编写RoutingForm,因此请从大写字母开始:
# app/forms.py
from django import forms
class RoutingForm(forms.Form):
areaDigit = forms.CharField(label='areaDigit', max_length=100)
product = forms.CharField(label='product', max_length=100)
函数本身中的变量通常以snake_形式编写。因此,视图如下所示:
# app/views.py
from django.shortcuts import render
from .forms import RoutingForm
from django.http import HttpResponse, HttpResponseRedirect
from .models import Product, Routing_Dest_Area
def get_route_list(request):
areaDigit = None
if request.method == 'POST':
#Get the posted form
routing_form = RoutingForm(request.POST)
if routing_form.is_valid():
areaDigit = routing_form.cleaned_data['areaDigit']
else:
return render(request, 'routing/test.html',{'areaDigit':areaDigit})
您不能写入routingForm=routingFormrequest.POST,因为这使routingForm成为一个局部变量,并且在赋值之前使用它。这对我来说是有效的…但变量areaDigit再次出现相同的错误,但上述解决方案不适用于此…请help@Jibin:如果您发出GET请求,或使用无效表单,当然,您不需要设置areaDigit,而是在上下文中使用它。请参阅edit.am using post method,areaDigit是有效的。@Jibin:在视图函数的顶部添加areaDigit=None是否解决了问题?实际上,在表单am中,在文本框中输入值对应于areaDigit,另外,当我选中网络时,我只从表单数据字段中的选择框中获取值…请检查添加的新图像