2010-05-19 6 views
54

페이지를보기 전에 사용자가 로그인하도록하고 싶습니다. 사용자 로그인을위한 기본 제공 템플릿이 있습니까? 그렇다면 자체 로그인을 페이지에 작성할 필요가 없습니까?Django에 내장 된 로그인 템플릿이 있습니까?

+2

'Django는 인증보기에 대해 ** 기본 템플릿 **을 제공하지 않습니다. 사용할보기에 대한 고유 한 템플릿을 만들어야합니다. ' –

답변

47

예. https://docs.djangoproject.com/en/1.8/topics/auth/default/#django.contrib.auth.decorators.login_required을 ...하지만 여기에 몇 가지 총알 점은 다음과 같습니다 : 당신은 여기에 대해 모두 읽을 수

  • settings.py
  • 설치 URL에 대한에 INSTALLED_APPS-'django.contrib.auth '와 'django.contrib.contenttypes'를 추가 settings.py
  • MIDDLEWARE_CLASSES'django.contrib.auth.middleware.AuthenticationMiddleware'를 추가 보기에 django.contrib.auth.views.login을 사용하는 로그인 예 : url(r'^login/$', 'django.contrib.auth.views.login',name="my_login")
  • 보기에서 login_required 데코레이터를 포함하고보기 전에 추가하십시오. 예를 들어 ...

views.py ... 기본적으로

from django.contrib.auth.decorators import login_required 

@login_required 
def home(request): 
    return HttpResponse('Home Page') 

, 당신은 다음 my_template_directory/registration/login.html 내부의 템플릿을 넣어. 해당 템플릿에 대한 추가 정보는이 게시물의 시작 부분에있는 링크에서 찾을 수 있습니다. r'^accounts/$'r'^accounts/profile/$' URL을 추가 할 필요가 없습니다,

from django.contrib.auth.views import login, logout 

urlpatterns = patterns('', 
    url(r'^accounts/login/$', login, {'template_name': 'admin/login.html'}), 
    url(r'^accounts/logout/$', logout), 
) 

를 내가 아는 한 : 저자에 의해 코멘트에서 언급 한 바와 같이

+1

정보를 제공해 주셔서 감사합니다. 예외가 있습니다. TemplateDoesNotExist 그러나 관리자 로그인 페이지 (템플릿 폴더에서도 가능)가 존재합니다. – stanleyxu2005

+1

urlconf에서 'template_name': 'path/to/your/template.html'인수를 전달하여 올바른 위치에서 템플릿을 읽는 것을 확인하십시오. –

+0

@ stanleyxu2005 기본 템플릿을 사용하려면 실제로 템플릿 디렉토리의 하위 폴더에 만들어야합니다. – Brant

29

는이 작업을 수행하는 가장 쉬운 방법은 urls.py에 다음 줄을 추가하는 것입니다 사용자 프로필 관리가 필요한 경우가 아니면

@ mmatt가 의견에서 제안한 것처럼 에 LOGIN_REDIRECT_URL = '/'을 설정하면 로그인 후 /accounts/profile/으로 기본 리디렉션되는 것을 방지 할 수 있습니다. Django 설정 설명서에서 LOGIN_REDIRECT_URL을 참조하십시오.

url 대신 적절하게 path을 사용하여 장고 2.x에서 여전히 작동해야합니다.

+0

settings.py에서/accounts/profile 이외의 페이지로 리디렉션하도록'LOGIN_REDIRECT_URL = '/''을 설정하십시오. – mehmet

+2

'url()'의 문자열보기 인수 지원 [Django 1.10에서 삭제되었습니다] (https://docs.djangoproject.com/en/1.11/releases/1.10/#features-removed-in-1-10) . import import django.contrib.auth.views import login'과'url (r '^ accounts/login/$', login, ...) 대신에 (logout과 비슷하다.) – Evert

+0

고마워, 업데이트 – mrts

4

빠른 실행 방법을 사용하려면 제공되는 URLConf를 사용하는 것이 좋습니다. 예를 들어

:

urlpatterns = [ 
    url('^', include('django.contrib.auth.urls')) 
] 

은 장고 문서에서 자세한 내용을 참조하십시오 @brant에 의해 https://docs.djangoproject.com/en/1.8/topics/auth/default/#module-django.contrib.auth.views

+0

그리고 동일한 페이지에있는 샘플 로그인 템플릿 https://docs.djangoproject.com/ko/1.8/topics/auth/default/#all-authentication-views 기본 제공되는 템플릿이없는 것 같습니다. 제 3 자 모듈이 필요합니다 : https://www.djangopackages.com/grids/g/registration/ –

+0

자기 정정 : 일부보기에는'accounts/password_reset /'와 같은 빌트인 템플릿이 있고, 다른 사람들은' 'accounts/login /'을 좋아하십시오. –

7

가장 upvoted response 기술적으로 올바르지 않습니다. Django는 로그인 기능을 처리하기위한 기본보기를 제공하지만 documentation은 템플릿을 제공하지 않습니다.

장고는 인증보기에 기본 템플릿을 제공하지 않습니다. 사용할보기에 대해 사용자 고유의 템플리트를 작성해야합니다. 템플릿 컨텍스트는 각보기에 설명되어 있습니다. 모든 인증보기를 참조하십시오.

관련 문제