Django: django.urls.exceptions.NoReverseMatch: не найден реверс для «update» с аргументами ((',,)') - PullRequest
1 голос
/ 08 ноября 2019

Когда я пытаюсь визуализировать шаблон после входа в систему, я получаю

django.urls.exceptions.NoReverseMatch: для 'update' с аргументами ключевого слова '{' pk ':' '}' нетнашел. Попробован 1 шаблон (ов): ['users / (? P [0-9] +) / update / $']

Моя строка в urls.py:

app_name="users"
...

path("users/<int:pk>/update/", view=user_update_view, name="update"),

И строка в шаблоне:

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

Я вижу, что request.user.pk не дает значения, но я не знаю почему.

1 Ответ

1 голос
/ 08 ноября 2019

, чтобы предотвратить это, когда пользователь не вошел в запись.

{% 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 %}

Я думаю, что не стоит обновлять зарегистрированного пользователя, передавая id в параметре url. если кто-то намеренно вводит другой идентификатор в адресную строку, он может обновить чей-либо профиль. так что вместо того, чтобы делать это изменить ваш URL, как показано ниже. path("users/update/", view=user_update_view, name="update"), и по твоему мнению

@login_required
def user_update_view(request):
    user= User.objects.get(id=request.user.id)

    # whatever you want!!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...