Django:Django.url.exceptions.NoReverseMatch:与'相反;更新';带参数';(';';,)';找不到

Django:Django.url.exceptions.NoReverseMatch:与'相反;更新';带参数';(';';,)';找不到,django,django-templates,Django,Django Templates,当我在登录后尝试渲染模板时,我得到 django.url.exceptions.NoReverseMatch:与“更新”相反 找不到关键字参数“{pk”:“}”。尝试了1个模式: ['users/(?P[0-9]+)/update/$'] URL.py中的我的行: app_name="users" ... path("users/<int:pk>/update/", view=user_update_view, name="update"), app\u name=“用户” ..

当我在登录后尝试渲染模板时,我得到

django.url.exceptions.NoReverseMatch:与“更新”相反 找不到关键字参数“{pk”:“}”。尝试了1个模式: ['users/(?P[0-9]+)/update/$']

URL.py中的我的行:

app_name="users"
...

path("users/<int:pk>/update/", view=user_update_view, name="update"),
app\u name=“用户”
...
路径(“users//update/”,view=user\u update\u view,name=“update”),
和模板中的行:

<a href="{% url 'users:update' pk=request.user.pk %}">Update user</a>


我看到,request.user.pk没有给出值,但我不知道为什么。

为了防止在用户未登录时发生这种情况

{% if request.user.is_authenticated %}
<a href="{% url 'users:update' %}">Update user</a>
{% else %}
 <p> user not logged in </p> or whatever you want!!
{% endif %}

看起来像是您的
请求。用户
没有
主键
。例如,因为它是一个
匿名用户
(如果用户未登录)。我明白了。但问题是,我登录了。当我通过表单登录时,身份验证会起作用,因为我也登录到django管理站点。请尝试删除
请求
,使用
pk=user.pk
instead@Yellowduck没有工作这很奇怪,因为当我用我的表单登录时,我登录到了管理站点,但在这个视图中,用户没有被授权。有什么想法,我应该怎么做,要解决这个问题?我有用户的DetailView,登录时会重定向到该用户。在这里我有一些链接,包括重定向到UpdateView的链接。此模板仅在用户登录时显示。当我在本地测试它时,它工作正常,但我在digitalocean上部署以检查在生产环境中是否工作正常。
@login_required
def user_update_view(request):
    user= User.objects.get(id=request.user.id)

    # whatever you want!!