django 사용자 로그인, 데모 종료

3250 단어 django
로그인, 종료 등의 구체적인 기능을 구현합니다.물론 로그인 외에도 많은 것들이 있습니다.이곳은 단지 시스템 로그인 퇴출 부분의 기능을 해체할 뿐이다.
login의templates 디렉터리에 두 개의 템플릿을 만듭니다. 각각login입니다.html 및 index.html, 사용자가 로그인하지 않았을 때login으로 이동합니다.html 페이지, 로그인 성공 또는 로그인 상태, index로 이동.html.
 
url의 설정 내용은 다음과 같습니다:
from django.conf.urls import url, include
from users.views import LoginView,LogoutView
urlpatterns = [
url(r'^login/$', LoginView.as_view(), name='login'),
#     
url(r'^logout/$', LogoutView.as_view(), name='logout'),
]

 
두 개의 설정은 두 개의 접근 가능한 URL을 공동으로 정의합니다.
http://ip:port/login/
http://ip:port/logout/
두 페이지를 보면 간단하면서도 아름답지 않은데 주로 기능을 설명하기 위해서다.login.html은 다음과 같습니다.



    
      


    
        {% csrf_token %}                
               
           

Django의 템플릿이 사용되었습니다. {% url%} url 설정의name 파라미터를 통해 역방향으로 해석하는 데 사용됩니다. 이 예는 다음과 같습니다.http://ip:port/login/.{{...}}템플릿에 렌더를 비추는 매개 변수, 다음views.py에서 대응하는 코드를 볼 수 있습니다.그 다음은 홈.html



    
      

      ,{{ username }}


forms     :from django import forms
class LoginForm(forms.Form):
    username = forms.CharField(required=True)
    password = forms.CharField(required=True, min_length=5)

login/views.py import

from django.contrib.auth import authenticate, login, logout
from .forms import LoginForm,

#     
class LoginView(View):
    def get(self, request):
        return render(request, 'login.html')

    def post(self, request):
        login_form = LoginForm(request.POST)
        if login_form.is_valid():
            user_name = request.POST.get('username', '')
            password = request.POST.get('password', '')
            #     authenticate    return user
            user = authenticate(username=user_name, password=password)

            if user is not None:
                if user.is_active:  #        (is_active      )
                    login(request, user)
                    return HttpResponsePermanentRedirect(reverse('index'))   #  
                return render(request, 'login.html', {'msg': '     !'})
            return render(request, 'login.html', {'msg': '         !'})

        return render(request, 'login.html', {'form_errors': login_form.errors})


#     
class LogoutView(View):
    def get(self, request):
        logout(request)
        return HttpResponsePermanentRedirect(reverse('login'))

LoginView login , , authenticate , , , login , , login.html 。

좋은 웹페이지 즐겨찾기