2017-02-16 63 views
0

base.html模板,Django的搜索在未指定位置

<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.htmlregistration/password_reset_done.htmlregistration/password_reset_confirm.htmlregistration/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'), 

有什麼建議?謝謝 !

編輯:模板中搜索僅在/login/logout/register不作爲URL路徑的正確位置。我嘗試使用/user_login/user_logout/user_register,它工作。我認爲這與urls.py的內置登錄衝突。如何糾正?

+0

您是否在使用任何第三方軟件包進行登錄? – itzMEonTV

+0

@itzmeontv:沒有第三方......去解決問題。已經發布它作爲答案! –

回答

0

我上述login和其它網址提到url(r'^', include('django.contrib.auth.urls'))urls.py

from django.conf.urls import url 

from . import views 

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

。這是原因,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.pyaccounts

在主urls.py

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

base.html

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

謝謝..我將它改爲'accounts/login'以避免更多問題。 –