如何解决赋值前引用的局部变量并正确返回模板中的表单数据



我想返回在模板的表单中输入的项目代码和项目编号。这是一个非常简单的应用程序。

views.py

def index(request):
csv_form = ''
if request.method == 'POST':
csv_form = CsvForm(request.POST, request.FILES)
if csv_form.is_valid():
csv_itemcode= csv_form.cleaned_data['item_code']
csv_itemnumber= csv_form.cleaned_data['item_number']
else:
csv_form = CsvForm()
context = {'csv_itemcode': csv_itemcode, 'csv_itemnumber': csv_itemnumber,'csv_form':csv_form} 
return render(request,'colorlib-regform-6/submit.html',context)

submit.html

<html>
<body>
<h4>{{ csv_itemcode }}</h4>
<h4>{{ csv_itemnumber }}</h4>
</body>
</html>

我在赋值之前引用了局部变量csv_itemcode。对此有任何建议。

您的模板中使用了变量csv_itemcode,但尚未为其分配任何值,因此换句话说,它不存在。为了解决这个问题,您可以使用None或其他适当的默认值对其进行初始化。因此,您的另一个变量csv_itemnumber将出现smiliar问题。

如果你不想显示变量,直到它被分配了一个值,那么你可以使用类似的东西

{% if csv_itemcode != None and csv_itemnumber != None %}
<h4>{{ csv_itemcode }}</h4>
<h4>{{ csv_itemnumber }}</h4>

{% else %}
<h4>Some Default Text</h4>
{% endif %}

请记住将变量初始化为None,这样才能正常工作。您可以选择一些其他适当的默认值,然后只需更改

{% if csv_itemcode != None and csv_itemnumber != None %}

声明。

实际上,在if语句中,您正在创建一个变量csv_itemcode,以便在if范围内使用。所以试着在if语句中添加。你可以这样做

def index(request):
csv_form = ''
if request.method == 'POST':
csv_form = CsvForm(request.POST, request.FILES)
if csv_form.is_valid():
csv_itemcode= csv_form.cleaned_data['item_code']
csv_itemnumber= csv_form.cleaned_data['item_number']
context = {'csv_itemcode': csv_itemcode, 'csv_itemnumber': csv_itemnumber}
return render(request,'colorlib-regform-6/submit.html',context)
else:
csv_form = CsvForm()
context = {'csv_form':csv_form} 
return render(request,'colorlib-regform-6/submit.html',context)
else:
return render(request,'colorlib-regform-6/submit.html')

最新更新