【发布时间】:2019-01-29 09:49:33
【问题描述】:
我对 django 不太熟悉。正在做一个学习项目。所以在这里我得到了错误,上面写着 UnboundLocalError, "local variable 'url_array' referenced before assignment" 。这是我的 form.py 、 views.py 和 html 代码。请看看并给我一个解决方案。
forms.py
from django import forms
from .models import Images
class ImageForm(forms.ModelForm):
class Meta:
model = Images
fields = ('__all__')
views.py
class Upload(View):
def post(self, request):
form = ImageForm(request.POST, request.FILES)
if form.is_valid():
form.save()
imageZip=request.FILES
fs = FileSystemStorage()
url_array = []
with ZipFile(imageZip['image'], 'r') as zip:
zip.extractall()
unzip_file= zip.namelist()
for files in unzip_file:
with open(files, "rb") as file:
name = fs.save('read.jpg', file)
url_array.append(fs.url(name))
else:
form = ImageForm()
return render(request, 'toDo_app.html', context = {'form': form, 'url':url_array})
toDo_app.html
<form class="" enctype="multipart/form-data" action="/upload/" method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit" >Upload</button>
</form>
<br>
{% if url %}
<p>Uploaded file: </p>
<ul>
{% for urls in url %}
<li> <a href="{{ urls }}">{{ urls }}</a> </li>
{% endfor %}
</ul>
{% endif %}
所以我的错误是在return render(request, 'toDo_app.html', context = {'form': form, 'url':url_array}) 行。
感谢您的宝贵时间,我将非常感谢您的解释和解决方案
【问题讨论】:
-
你在使用 url_array 时没有分配任何东西。你只在你的条件块内赋值,所以如果条件评估为假,你使用的是未定义的符号。