错误: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):
答案 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'),