【发布时间】:2021-10-28 03:02:21
【问题描述】:
我最近才开始学习 Django。 我的密码更改页面有问题
403 失败原因: CSRF 令牌丢失或不正确。
我的用户/urls.py
urlpatterns = [
path(
'logout/',
LogoutView.as_view(template_name='users/logged_out.html'),
name='logout'
),
path(
'login/',
LoginView.as_view(template_name='users/login.html'),
name='login'
),
path(
'password_change/',
PasswordChangeView.as_view(template_name='users/password_change_form.html'),
name='password_change_form'
),
path(
'password_change/done/',
PasswordChangeDoneView.as_view(template_name='users/password_change_done.html'),
name='password_change_done'
),
...,
]
我的模板中的表单开始
<form method="post"
{% if action_url %}
action="{% url action_url %}"
{% endif %}
>
{% csrf_token %}
<input type="hidden" name="csrfmiddlewaretoken" value="">
使用此表单,我收到错误 403 和“CSRF 令牌丢失或不正确”。
没有这个字符串,everythink 工作
<input type="hidden" name="csrfmiddlewaretoken" value="">
每个想法都有效。 1)你能解释一下为什么吗?还有,这是什么? 使用 csrf 的最佳方法是什么? 2)我以前也写like
<form method="post" action="{% url 'users:password_change_form' %}">
但是使用 action_url 创建了这个例子。 什么是 action_url? 哪种方式更好?
【问题讨论】:
标签: python django django-views django-forms django-templates