Python Django在未指定的位置搜索模板
在Python Django在未指定的位置搜索模板,python,django,django-models,django-templates,django-admin,Python,Django,Django Models,Django Templates,Django Admin,在base.html中 <a href="/login">Log In</a> 在accountsviews.py中 from ... from accounts.views import login_view, logout_view, register_view urlpatterns = [ ... url(r'^login/', login_view), .... ] def login_view (request): requ
base.html
中
<a href="/login">Log In</a>
在accountsviews.py
中
from ...
from accounts.views import login_view, logout_view, register_view
urlpatterns = [
...
url(r'^login/', login_view),
....
]
def login_view (request):
request.session.set_expiry(request.session.get_expiry_age())
form = UserLoginForm(request.POST or None)
title = "Login"
if form.is_valid() :
username = form.cleaned_data.get("username")
password = form.cleaned_data.get("password")
user = authenticate(username=username, password=password)
login(request,user)
return HttpResponseRedirect('/')
return render(request, 'accounts/login_form.html',{ "form" : form, "title": title})
单击登录
时,将在'registration/login.html'
中搜索登录表单
模板,而不是'accounts/login\u form.html'
Django tried loading these templates, in this order:
Using engine django:
django.template.loaders.app_directories.Loader: /Users/***/Desktop/django/mysite/personal/templates/registration/login.html (Source does not exist)
django.template.loaders.app_directories.Loader: /Users/***/Desktop/django/mysite/blog/templates/registration/login.html (Source does not exist)
django.template.loaders.app_directories.Loader: /Users/***/Desktop/django/mysite/landing/templates/registration/login.html (Source does not exist)
django.template.loaders.app_directories.Loader: /Users/***/Desktop/django/mysite/accounts/templates/registration/login.html (Source does not exist)
django.template.loaders.app_directories.Loader: /Library/Python/2.7/site-packages/crispy_forms/templates/registration/login.html (Source does not exist)
django.template.loaders.app_directories.Loader: /Library/Python/2.7/site-packages/pagedown/templates/registration/login.html (Source does not exist)
django.template.loaders.app_directories.Loader: /Library/Python/2.7/site-packages/markdown_deux/templates/registration/login.html (Source does not exist)
django.template.loaders.app_directories.Loader: /Library/Python/2.7/site-packages/tracking/templates/registration/login.html (Source does not exist)
django.template.loaders.app_directories.Loader: /Library/Python/2.7/site-packages/django/contrib/admin/templates/registration/login.html (Source does not exist)
django.template.loaders.app_directories.Loader: /Library/Python/2.7/site-packages/django/contrib/auth/templates/registration/login.html (Source does not exist)
所有这一切都很好,直到我尝试过清除注册/密码重置\u表单.html
,注册/密码重置\u完成.html
,注册/密码重置\u确认.html
,
注册/password\u reset\u complete.html
以实现密码重置功能
主要的url.py
包括
url(r'^user/password/reset/$','django.contrib.auth.views.password_reset',{'post_reset_redirect' : '/user/password/reset/done/'},name="password_reset"),
url(r'^user/password/reset/done/$','django.contrib.auth.views.password_reset_done'),
url(r'^user/password/reset/(?P<uidb36>[0-9A-Za-z]+)-(?P<token>.+)/$','django.contrib.auth.views.password_reset_confirm',{'post_reset_redirect' : '/user/password/done/'}),
url(r'^user/password/done/$','django.contrib.auth.views.password_reset_complete'),
url(r'^user/password/reset/$,'django.contrib.auth.views.password_reset',{'post_reset_redirect':'/user/password/reset/done/'},name=“password_reset”),
url(r“^user/password/reset/done/$”、“django.contrib.auth.views.password\u reset\u done”),
url(r'^user/password/reset/(?P[0-9A-Za-z]+)-(?P.+)/$','django.contrib.auth.views.password\u reset\u confirm',{'post\u reset\u redirect':'/user/password/done/'),
url(r“^user/password/done/$”、“django.contrib.auth.views.password\u reset\u complete”),
有什么建议吗?谢谢
编辑:仅当
/login
、/logout
和/register
未用作url路径时,才会在正确位置搜索模板。我试着使用/user\u login
,/user\u logout
,和/user\u register
,效果很好。我认为这与url.py的内置登录冲突。如何更正此问题?可能是您应该为您的应用程序帐户创建url.py
帐户url.py
from django.conf.urls import url
from . import views
urlpatterns = [
# ex: /accounts/
url(r'^login/', login_view),
]
from ...
urlpatterns = [
...
url(r'^accounts/', include('yourwebsite.accounts.urls')),
....
]
在mainurl.py中
from django.conf.urls import url
from . import views
urlpatterns = [
# ex: /accounts/
url(r'^login/', login_view),
]
from ...
urlpatterns = [
...
url(r'^accounts/', include('yourwebsite.accounts.urls')),
....
]
和base.html
<a href="/accounts/login">Log In</a>
我有url(r'^',包括('django.contrib.auth.url'))
上面提到的登录
和其他url。这就是Django在/registration/login
下寻找模板的原因。我仍然不知道为什么Django在url为/login
时会在该位置查找模板。当url为“帐户/登录名”时,不会出现任何问题。我将url(r'^',include('django.contrib.auth.url'))
放在urlpatterns的末尾
from django.conf import settings
from django.conf.urls import url, include
from django.conf.urls.static import static
from django.contrib import admin
from accounts.views import login_view, logout_view, register_view, reset_password_view
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^blog/', include('blog.urls')),
url(r'^', include('personal.urls')),
url(r'^login/', login_view),
url(r'^logout/', logout_view),
url(r'^register/', register_view),
url(r'^reset-password/', reset_password_view),
url(r'^landing/', include('landing.urls')),
url(r'^tracking/', include('tracking.urls')),
url(r'^accounts/', include('accounts.urls')),
url(r'^', include('django.contrib.auth.urls')), # Put this in the end
]
您是否使用任何第三方软件包登录?@itzmeontv:没有第三方..得到了解决方案。我已经把它作为答案发布了!谢谢我将其更改为帐户/登录
,以避免进一步的问题。