2013-06-02 4 views
2

저는 장고를 처음 사용하고 django.contrib.auth.login을 사용하는 데 어려움이 있습니다.장고 템플릿에서 django.contrib.auth.login을 참조하십시오.

내 urls.py :

이제
from django.conf.urls import patterns, include, url 
from myapp import views 
from django.contrib import auth 

urlpatterns = patterns('', 
    url(r'^$', views.index, name='index'), 
    url(r'^accounts/', include('accounts.urls')), 
    url(r'^accounts/login/$', auth.login) 
) 

, 내가 템플릿

<a href="{% url 'accounts/login' %}?next={{request.path}}">Login</a> 

내가 NoReverseMatch 오류를 얻고있는 URL을 사용하려합니다. 내가 뭘 잘못하고 있니? 감사합니다. .

EDIT1 : 마침내 NoReverseMatch 오류를 해결할 수있었습니다. 감사. 그래도 여전히 문제가 있습니다.

urls.py :

from django.conf.urls import patterns, include, url 

from myapp import views 
from django.contrib.auth.views import login 

urlpatterns = patterns('', 
    url(r'^$', views.index, name='index'), 
    url(r'^accounts/', include('accounts.urls')), 
    url(r'^accounts/login/$', login) 
) 

내 템플릿 index.html을이 :

<a href="{% url 'django.contrib.auth.views.login' %}?next={{request.path}}">Login</a> 

문제 : 나는 페이지를 얻고 클릭하면 내가 "로그인"여기 내 업데이트 된 코드입니다 그것은 화장실, 그래서/계정/로그인시

DoesNotExist/

: 다음과 같은 오류가 ks를 account/login /에서 볼 수 있습니다. 로그인 화면이 보이지 않습니다. django.contrib.auth.views.login이 나에게보기를 제공하기 때문에. 내 urls.py는 어떻게 수정해야합니까? 아니면 해결할 다른 방법이 있습니까? 감사.

편집 2 :

내 계정/urls.py :

에, 그래서 {% url %}.

url(r'^accounts/login/$', auth.views.login, name='account_login') 

을 사용하는 경우이 중 하나를 볼 수 URLName의 또는 경로를 사용할 필요가

from django.conf.urls import patterns, url 

from accounts import views 

urlpatterns = patterns('', 
    url(r'^register/$', views.register, name='register') 
) 
+0

이 접근 권장 작업 중에, URL을 명명 시도하지 않는 경우, 그리고 템플릿에서 명명 된 URL을 전화 : (제가 위에서 언급 한 바와 같이) 당신이보기를 가리 키도록 URL을 변경하는 경우, akshar의 대답은 정확해야 – karthikr

답변

3

. 첫째, URL에서 넌 뷰 (non-view) 함수를 호출하려고합니다. "auth.login은"장고 인증 응용 프로그램에 의해 제공되는 로그인 기능이지만 :

"auth.views.login은"그래서 당신이 호출 할 할 뷰 기능이다 :

from django.contrib.auth.views import login 

... 
    url(r'^accounts/login/$', login), 

있을 때마다 당신의 견해 중 하나에 문제가 있다면, 역으로 작동하지 않을 것입니다. (관련 문서를 찾으려고 노력할 것입니다.)

둘째, URL 경로를 역전하려고합니다. Reverse는 뷰의 이름이나 URL 이름을 가져오고 그 URL을 반환합니다.

{% url 'django.contrib.auth.views.login' %} 
+0

페이지를 실행하는 데 성공했습니다. 감사합니다. 나는 여전히 다른 문제를 가지고있다. django.contrib.auth.views.login은 기본 로그인보기를 제공하고 템플릿 registration/login.html을 찾는다. 내가 '^ accounts/login/$'에 매핑하면 장고 내에 개발되었으므로 거기에없는보기 django.contrib.auth.views.login을 찾으려고합니다. 로그인 링크를 클릭하면 "DoesNotExist at/accounts/login /"가 표시됩니다. 어떻게 준비해야합니까? – jazzblue

+0

죄송하지만 귀하의 질문을 이해할 수 없습니다. "맵핑"할 때, "그것"은 무엇이고, 어떻게/당신은 맵핑합니까? Template DoesNotExist 오류가 발생했다는 말입니까? 아마도 몇 가지 코드를 제공 할 수 있습니까? – cazgp

+0

안녕하세요 Cazgp, 방금 새 코드를 추가하고 질문에 내 문제를 설명했습니다. 감사. – jazzblue

3

템플릿을 말할 수 있습니다 :

<a href="{% url 'account_login' %}?next={{request.path}}">Login</a> 

또는이 문제 몇 가지가 있습니다

<a href="{% url 'django.contrib.auth.views.login' %}?next={{request.path}}">Login</a 
+0

감사합니다. 실제로 마지막 옵션 인 Login을 시도했지만 여전히 NoReverse 오류가 발생합니다. 어떻게 든 그것은보기를 찾을 수 없습니다. – jazzblue

+0

첫 번째 옵션을 시도해 볼 수 있습니까 –

+0

django.contrib.auth.views.login은 기본 로그인 메커니즘이 구현 된보기입니다. 그 URL이 무엇인지 알 수 없으므로 왜 urls.py에 그것에 대해 무엇을 넣어야합니까? – jazzblue

관련 문제