0

В base.html,Джанго поиск шаблона в неустановленном месте

<a href="/login">Log In</a> 

В главном urls.py,

from ... 
from accounts.views import login_view, logout_view, register_view 
urlpatterns = [ 
    ... 
    url(r'^login/', login_view), 
    .... 
] 

В счетах views.py,

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}) 

Когда Log In щелчок, login_form шаблон находится в 'registration/login.html' вместо 'accounts/login_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) 

Все это работает отлично, пока я не попробовал чрезмерно избавление registration/password_reset_form.html, registration/password_reset_done.html, registration/password_reset_confirm.html, registration/password_reset_complete.html для достижения функциональности сброса пароля.

Основные urls.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'), 

Любые предложения? Благодаря !

Edit: Шаблон ищется в нужном месте только тогда, когда /login, /logout и /register не используются в качестве пути URL. Я пробовал использовать /user_login, /user_logout и /user_register, и это сработало. Я думаю, что это противоречит встроенному логину urls.py. Как исправить это?

+0

Вы используете сторонние пакеты для входа? – itzMEonTV

+0

@itzmeontv: Нет третьей стороны. Получилось решение. Выложили это как ответ! –

ответ

0

Я url(r'^', include('django.contrib.auth.urls')) упоминалось выше login и другие страницы сайта. Именно по этой причине Django искал шаблон под номером /registration/login. Я до сих пор не знаю, почему Django ищет шаблон в том месте, где URL-адрес равен /login. Когда URL-адрес равен accounts/login, проблем не возникает. Я положил url(r'^', include('django.contrib.auth.urls')) в конце 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 
] 
1

Может быть, вам следует создать urls.py для вашего приложения accounts?

счета urls.py

from django.conf.urls import url 

from . import views 

urlpatterns = [ 
    # ex: /accounts/ 
    url(r'^login/', login_view), 
] 

в главном urls.py

from ... 
urlpatterns = [ 
    ... 
    url(r'^accounts/', include('yourwebsite.accounts.urls')), 
    .... 
] 

и base.html

<a href="/accounts/login">Log In</a> 
+0

Спасибо .. Я изменил его на 'accounts/login', чтобы избежать дальнейших проблем. –