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

问题描述

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

视图.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)

提交.html

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

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

标签: python-3.xdjangodjango-viewsdjango-formsdjango-templates

解决方案


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

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

{% 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 %}

相应地声明。


推荐阅读