Django外键pk在url中作为参数

时间:2018-05-08 17:56:29

标签: python django

我正在尝试将url中的外键pk称为参数,如:

{% for msg in msgs %}
    <li>
        <a href="{% url 'home' msg.user.pk %}">Go</a>
        ...
        </Li>
{% endfor %

但它失败了。而不是,如果我在模板中使用 {{msg.user.pk}} ,它可以工作,我可以看到pk。

模型是:

class Message(models.Model):
    text = models.CharField(...)
    user = models.ForeignKey(User, ...)

的url:

url(r'^home/(?P<pk>[0-9]+)/$', views.home, name='home'),

查看:

def home(request, pk):
    user = get_object_or_404(User, pk=pk)
    if request.method == 'GET':
        messages.info(request, 'Hello ' + user.username)
    ...

def messages_list(request):
    msgs = Message.objects.all()
    return render(request, 'messages.html', context={'msgs': msgs'}) 

错误:

Reverse for 'home' with keyword arguments '{'pk': ''}' not found. 1 pattern(s) tried: ['home/(?P<pk>[0-9]+)/$']

0 个答案:

没有答案