我有Django的问题。
我的错误讯息:
/ city / city的UnboundLocalError 分配前引用的局部变量'adv_city'
的观点:
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)
如何解决?
答案 0 :(得分:1)
如果adv_city
评估为false,则应为c
提供默认值。例如,一个空列表可能适用于您的情况:
c = request.GET.get('city', '')
adv_city = Advert.objects.filter(city=c) if c else []
如果你不这样做,并且c
是假的(Python将空字符串视为假,你可能知道),那么adv_city
变量将不被视为已分配。
如果您可以拥有一个空字符串作为Advert
属性的有效city
,那么只需删除if
并让过滤器运行价值c
。
答案 1 :(得分:1)
你应该记录c
的值,我认为你的代码没有到达if
内的代码,如果你在request.GET.get('city','')
给它一个默认值,空字符串就不会去了在if