위반 :
양식 제출하려고 노력하지만, 내가이 문제를 해결하는 데 도움이 호야 오류 "지역 변수 'routingForm'할당하기 전에 참조"를 얻고있다.
***** 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)
***** 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 = routingForm(request.POST)
그 수 있기 때문에 routingForm
지역 변수, 그리고이 할당되기 전에이 사용됩니다.
그러나 나는 강하게 당신이 쓰기 제안 RoutingForm
에 PerlCase 대문자로 시작하는, 그래서 :
# 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_case로 작성됩니다. 그래서 다음 뷰 외모와 같은 :
# 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})