0

我对 Django 有疑问。

我的错误信息:

分配前引用的 /city/city 局部变量 'adv_city' 处的 UnboundLocalError

追溯: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)

如何解决?

4

2 回答 2

1

adv_city如果c评估结果为假,您应该给出一个默认值。例如,一个空列表可能适用于您的情况:

c = request.GET.get('city', '')
adv_city = Advert.objects.filter(city=c) if c else []

如果你不这样做,并且c是假的(如你所知,Python 将空字符串视为假),那么该adv_city变量将不会被视为已分配。

如果您可以有一个Advert带有空字符串的有效属性作为city属性,那么只需删除if并让过滤器针对 . 的任何值运行c

于 2012-05-24T05:48:10.263 回答
1

你应该记录的值c,我认为你的代码没有到达里面的代码if,如果你给它一个默认值request.GET.get('city',''),空字符串不会在里面if

于 2012-05-24T05:48:25.437 回答