我要做的是覆盖django用于password_reset,password_reset_done,password_reset_confirm和password_reset_complete的默认HTML模板。当我将自定义模板添加到第一个URL(password_reset)时,它实际上运行良好。我可以键入与用户关联的电子邮件,然后继续进行重置过程,但是当我尝试为password_reset_done视图添加自定义模板时,password_reset视图不再起作用,并且出现以下错误:
AndroidDriver
这是我的urls.py:
// Get location of element you want to swipe
WebElement banner = driver.findElement(<your_locator>);
Point bannerPoint = banner.getLocation();
// Get size of device screen
Dimension screenSize = driver.manage().window().getSize();
// Get start and end coordinates for horizontal swipe
int startX = Math.toIntExact(Math.round(screenSize.getWidth() * 0.8));
int endX = 0;
TouchAction action = new TouchAction(driver);
action
.press(PointOption.point(startX, bannerPoint.getY()))
.waitAction(WaitOptions.waitOptions(Duration.ofMillis(500)))
.moveTo(PointOption.point(endX, bannerPoint.getY()))
.release();
driver.performTouchAction(action);
注意:如果我将password_reset_done和所有其他参数替换为它们的正确名称='password_reset_done,name ='password_reset_confirm',name ='password_reset_complete'参数,则所有功能正常,但是我将使用默认模板。 / p>
以下是运行时的urls.py:
Reverse for 'password_reset_done' not found. 'password_reset_done' is not a valid view function or pattern name.
只有第一个模板可以更改而不会引起任何错误。我对django还是比较陌生,在文档中没有找到任何可以帮助我解决此问题的东西。
我将在下面保留其他可能重要的代码
来自settings.py
from django.conf.urls import url
# imports for views at a gloabl level (aka other django apps)
from . import views
from django.contrib.auth.views import (
login,
logout,
password_reset,
password_reset_done,
password_reset_confirm,
password_reset_complete
)
urlpatterns = [
url(r'^$', views.home),
url(r'^login/$', login, {'template_name': 'accounts/login.html'}),
url(r'^logout/$', logout, {'template_name': 'accounts/logout.html'}),
url(r'^register/$', views.register, name='register'),
url(r'^profile/$', views.view_profile, name='view_profile'),
url(r'^profile/edit$', views.edit_profile, name='edit_profile'),
url(r'^change-password$', views.change_password, name='change_password'),
url(r'^reset-password$', password_reset, {'template_name': 'accounts/reset_password.html'}),
url(r'^reset-password/done/$', password_reset_done, {'template_name': 'accounts/password_reset_done.html'}),
url(r'^reset-password/confirm/(?P<uidb64>[0-9A-Za-z]+)-(?P<token>.+)/$',
password_reset_confirm, {'template_name': 'accounts/password_reset_confirm.html'}),
url(r'^reset-password/complete/$', password_reset_complete, {'template_name': 'accounts/password_reset_complete.html'})
]
任何见识都将不胜感激。
答案 0 :(得分:3)
您需要为这些URL添加名称,就像为自己的URL添加名称一样。例如:
url(r'^reset-password/done/$', password_reset_done, {'template_name': 'accounts/password_reset_done.html'}, name='password_reset_done'),
答案 1 :(得分:0)
批准的答案对我不起作用。这样做了:
views.py:
from django.contrib.auth.views import PasswordResetConfirmView
# ...
class ActivateAccountConfirmView(PasswordResetConfirmView):
template_name = "./registration/account_activate_confirm.html"
urls.py:
re_path(
r'^accounts/activate/confirm/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$',
ActivateAccountConfirmView.as_view(),
name='account_activate_confirm'),
上下文:我在应用程序中重置了密码以及帐户激活功能。还要注意,这不是原始用户询问的视图,但是相同的方法应该可以使用。