int()的基数为10的无效文字:'n'

时间:2016-08-09 02:50:23

标签: python django

错误:ValueError at / follow / n /

实际上我不明白为什么会出现这个错误,我尝试过使用int()和float()但是,似乎任何工作

views.py

def followed(request, follow_to):
    return render(request, "test.html",{'following':Following.objects.get(follow_to=follow_to),
        'selfieList':Selfie.objects.filter(selfie_user=follow_to),})

模板

{% for f in following %}
        <a href="{% url 'followed' f.follow_to %}">{{f.follow_to}}</a> <br>
    {% endfor %}

urls.py

url(r'^followed/(?P<follow_to>[-\w]+)/$', followed, name='followed'),

models.py

class Following(models.Model):
    follow_from = models.ForeignKey("auth.User",related_name='from_person')
    follow_to = models.ForeignKey("auth.User", related_name='to_person')
    date_follow = models.DateTimeField(auto_now=True)

    def __unicode__(self):
        return unicode(self.follow_from)

    def __str__(self):

2 个答案:

答案 0 :(得分:1)

您的视图中有这段代码存在问题。

Following.objects.get(follow_to=follow_to)

这里传递给view的follow_to参数是字符串,从提到的url看来它似乎是'n'。但是您正在搜索将搜索对象id的外键。 id是整数。

因此,在查询中,它尝试将'n'转换为int以搜索适当的对象。但是转换失败了。

您需要检查一下和/或在id参数的网址中使用follow_to相关的正则表达式。

答案 1 :(得分:1)

如果使用django.contrib.auth.models.User模型,则其pk是整数。但是,url模式匹配任何单词字符(\w)。因此,如果只允许数字,则将urls.py修改为仅允许整数id匹配可能是一种解决方案。

url(r'^followed/(?P<follow_to>\d+)/$', followed, name='followed'),