developer tip

Django에 내장 로그인 템플릿이 있습니까?

copycodes 2020. 12. 30. 08:17
반응형

Django에 내장 로그인 템플릿이 있습니까?


페이지를보기 전에 사용자가 로그인 할 수 있도록하고 싶습니다. 사용자 로그인을위한 기본 제공 템플릿이있어 로그인 페이지를 직접 작성할 필요가 없습니까?


예. https://docs.djangoproject.com/en/1.8/topics/auth/default/#django.contrib.auth.decorators.login_required ... 에서 모든 내용을 읽을 수 있지만 여기에 몇 가지 중요 사항이 있습니다.

  • 추가 'django.contrib.auth.middleware.AuthenticationMiddleware'MIDDLEWARE_CLASSESsettings.py
  • 추가 'django.contrib.auth'및 'django.contrib.contenttypes'INSTALLED_APPSsettings.py
  • django.contrib.auth.views.login보기에 사용하는 로그인 URL을 설정하십시오.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. 해당 템플릿에 대한 추가 정보는이 게시물의 시작 부분에있는 링크에서 찾을 수 있습니다.


작성자의 의견에서 언급했듯이이 작업을 수행하는 가장 쉬운 방법은 다음 줄을에 추가하는 것입니다 urls.py.

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

내가 아는 한 사용자 프로필 관리가 필요하지 않으면 r'^accounts/$'r'^accounts/profile/$'URL을 추가 할 필요가 없습니다.

주석 @mmatt, 설정에 의해 제안 LOGIN_REDIRECT_URL = '/'settings.py에 기본 리디렉션을 피하기 위해 /accounts/profile/로그인 후. Django 설정 문서의 LOGIN_REDIRECT_URL참조하세요 .

이것은 적절하게 path대신 사용하여 Django 2.x에서도 여전히 작동 url합니다.


@brant가 가장 많이 찬성 한 응답 은 기술적으로 잘못되었습니다. Django는 로그인 기능을 처리하기위한 기본보기를 제공하지만 문서에 따라 템플릿을 제공하지 않습니다.

Django는 인증 뷰에 대한 기본 템플릿을 제공하지 않습니다. 사용하려는보기에 대한 고유 한 템플릿을 만들어야합니다. 템플릿 컨텍스트는 각보기에 문서화되어 있습니다. 모든 인증보기를 참조하십시오.


빠르게 시작하고 실행하려면 제공된 URLConf를 사용하는 것이 좋습니다.

예를 들면 :

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

django 문서 ( https://docs.djangoproject.com/en/1.8/topics/auth/default/#module-django.contrib.auth.views) 에서 자세한 내용을 참조하십시오.


mrts의 답변과 유사하게 최근 Django에서는 LoginView를 사용할 수 있습니다 . 또한 귀하는 같은 템플릿 컨텍스트를 설정하여 템플릿을 사용자 정의 할 수 있습니다 title, site_title에 사용되는 등 관리 / base.html 가 관리자 로그인처럼 보이지 않는 그래서.

from django.contrib.auth.views import LoginView

urlpatterns = [
    url(  
        r'^accounts/login/$',  
        LoginView.as_view(
            template_name='admin/login.html',
            extra_context={         
              'title': 'Login',
              'site_title': 'My Site',
              'site_header': 'My Site Login'},
        name='login'),
]

참조 URL : https://stackoverflow.com/questions/2867213/is-there-a-built-in-login-template-in-django

반응형