我对Django有问题。
我的错误消息:
UnboundLocalError at/city/city赋值前引用的局部变量"adv_city"
回溯:http://dpaste.com/751727/
视图:
def advert_by_city(request):
c = request.GET.get('city', '')
if c:
adv_city = Advert.objects.filter(city=c)
adverts = Advert.objects.values('city').distinct()
return render_to_response('advert_by_city', {'adverts':adverts},{'adv_city':adv_city}, context_instance=RequestContext(request))
模板:
{% for city in adverts %}
<a href="city?{{ city.city }}"/>{{city.city}}</a>
<br/>
{% endfor %}
{% for adverts in adv_city%}
{{adverts.title}}
{% endfor%}
型:
class Advert(models.Model):
title = models.CharField(max_length=255)
city = models.CharField(max_length=255)
如何解决?
您应该为adv_city
提供一个默认值,以防c
计算结果为 false。例如,空列表可能适用于您的情况:
c = request.GET.get('city', '')
adv_city = Advert.objects.filter(city=c) if c else []
如果你不这样做,并且c
是假的(Python 将空字符串视为假,你可能知道),那么adv_city
变量将不被视为已分配。
如果可以具有将空字符串作为 city
属性的有效Advert
,则只需删除if
并让过滤器针对 c
的任何值运行。
记录c
的值,我认为你的代码没有到达if
里面的代码,如果你在request.GET.get('city','')
中给它一个默认值,空字符串不会去if