收到电子邮件Django Rest Auth时如何自定义密码确认视图
我正在使用django Rest Auth实现密码重置,当请求从reactjs前端点击时,我需要做两件事我希望自定义电子邮件我希望使用Password_reset_email.html模板。首先,我使用简单的PasswordResetView,我收到了电子邮件,但它将我发送到本机Rest UI PasswordConfirmView 我想,当用户点击请求时,它应该使用我的模板,它们是,password\u reset.html,password\u reset\u confirm.html,password\u reset\u done.html。。。我们在templates/appname目录中创建 我的尝试: url.py:收到电子邮件Django Rest Auth时如何自定义密码确认视图,django,reactjs,django-rest-framework,django-urls,django-rest-auth,Django,Reactjs,Django Rest Framework,Django Urls,Django Rest Auth,我正在使用django Rest Auth实现密码重置,当请求从reactjs前端点击时,我需要做两件事我希望自定义电子邮件我希望使用Password_reset_email.html模板。首先,我使用简单的PasswordResetView,我收到了电子邮件,但它将我发送到本机Rest UI PasswordConfirmView 我想,当用户点击请求时,它应该使用我的模板,它们是,password\u reset.html,password\u reset\u confirm.html,pa
urlpatterns=[
url(
r'^rest-auth/password/reset/$',
PasswordResetView.as_view(),
name='password_reset',
),
url(
r'^rest-auth/password/reset/confirm/'
r'(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$',
PasswordResetConfirmView.as_view(),
name='password_reset_confirm'),
]
urlpatterns=[
网址(
r“^rest auth/password/reset/$”,
PasswordResetView.as_view(),
name='password\u reset',
),
网址(
r“^rest身份验证/密码/重置/确认/”
r'(?P[0-9A-Za-z_ \-]+)/(?P[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$,
PasswordResetConfirmView.as_view(),
name='password\u reset\u confirm'),
]
authsystem/模板:
urlpatterns=[
url(
r'^rest-auth/password/reset/$',
PasswordResetView.as_view(),
name='password_reset',
),
url(
r'^rest-auth/password/reset/confirm/'
r'(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$',
PasswordResetConfirmView.as_view(),
name='password_reset_confirm'),
]
密码\u重置\u确认.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{% if validlink %}
<h3>Change password</h3>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Change password</button>
</form>
{% else %}
<p>
The password reset link was invalid, possibly because it has already been used.
Please request a new password reset.
</p>
{% endif %}
</body>
</html>
标题
{%if validlink%}
更改密码
{%csrf_令牌%}
{{form.as_p}}
更改密码
{%else%}
密码重置链接无效,可能是因为它已被使用。
请请求重新设置新密码。
{%endif%}
我知道上面的方法比较少,但我想知道如何让它工作我不想使用rest auth内置UI,当请求从react端命中时,我如何在发送电子邮件时使用模板,当我单击电子邮件中的链接时,我想显示我的模板,令牌和uid应该从模板传递,我已经准备好了所有模板,但不知道如何与Django Rest Auth一起使用。通常,如果要覆盖包中的模板,请确保首先检查视图中使用的模板路径。例如,在rest身份验证软件包中(如果您没有安装allauth),密码重置由默认的Django
PasswordResetConfirmView
(Django.contrib.auth.views)处理,它使用模板'registration/password\u reset\u confirm.html',由于某种原因,它位于django/contrib/admin/templates/registration中
所以模板的加载方式,如果在你的任何应用程序中,你有这个模板,它将在Django之前加载。只需创建authsystem/templates/registration/password\u reset\u confirm.html,它将取代django/contrib/admin中的默认值
如果您使用的是allauth,则视图为
PasswordResetFromKeyView
(allauth.account.views)和相应的模板account/password\u reset\u from\u key.html。因此,在authsystem/templates/account/password\u reset\u from_key.html中创建此模板将覆盖来自allauth的模板。这不是REST视图(API),它只是来自allauth包的普通视图,因此您不必更改任何url(如果您更改了url(r'^account/',include('allauth.url')),
在您的主URL中)。只需覆盖allauth使用的模板,方法是将模板放在模板目录中的帐户目录中。另外,我认为模板名称不正确,应该是authsystem/templates/account/password\u reset\u from\u key.htmlI已删除所有auth并保持rest auth,我已覆盖password\u reset\u email.html模板,但是,当我点击电子邮件中的链接时,本机用户界面来自django rest,而不是我的自定义authsystem/Templates/registration/password\u reset\u confirm.html该链接看起来是这样的:我假设authsystem
是已安装的应用程序中的一个应用程序谢谢你的回复,不知怎的,我成功地使它工作了,我覆盖了帐户模板并然后在serializer中进行一些更改。同样的问题是,无法让Django(使用rest auth,而不是所有auth)实际为密码更改视图提供自定义模板(只有当我将web浏览器指向电子邮件中的链接时,我才能获得基于DRF自动生成选项的视图)。这一切都是不可思议的,而且子应用程序使用彼此的视图和模板,这也于事无补/