Django 프레임 워 크 전면 설명-세 션

8371 단어 Django
Django 에 서 는 기본적으로 Session 을 지원 합 니 다.내부 에 서 는 개발 자 들 이 사용 할 수 있 는 5 가지 유형의 Session 을 제공 합 니 다.
-    (  )
-   
-   
-   +   
-   cookie

1.데이터베이스 세 션
Django    Session,      Session         , :django_session   。

a.    settings.py

    SESSION_ENGINE = 'django.contrib.sessions.backends.db'   #   (  )

    SESSION_COOKIE_NAME = "sessionid"                       # Session cookie         key, :sessionid=     (  )
    SESSION_COOKIE_PATH = "/"                               # Session cookie     (  )
    SESSION_COOKIE_DOMAIN = None                             # Session cookie     (  )
    SESSION_COOKIE_SECURE = False                            #   Https  cookie(  )
    SESSION_COOKIE_HTTPONLY = True                           #   Session cookie   http  (  )
    SESSION_COOKIE_AGE = 1209600                             # Session cookie    (2 )(  )
    SESSION_EXPIRE_AT_BROWSER_CLOSE = False                  #          Session  (  )
    SESSION_SAVE_EVERY_REQUEST = False                       #          Session,         (  )

b.    
    def index(request):
        #   、  、  Session   
        request.session['k1']
        request.session.get('k1',None)
        request.session['k1'] = 123
        request.session.setdefault('k1',123) #       
        del request.session['k1']

        #     、 、   
        request.session.keys()
        request.session.values()
        request.session.items()
        request.session.iterkeys()
        request.session.itervalues()
        request.session.iteritems()

        #   session      
        request.session.session_key

        #    Session               
        request.session.clear_expired()

        #      session              
        request.session.exists("session_key")

        #          Session  
        request.session.delete("session_key")
         ...

2.캐 시 세 션
a.    settings.py

    SESSION_ENGINE = 'django.contrib.sessions.backends.cache'  #   
    SESSION_CACHE_ALIAS = 'default'                            #        (      ,    memcache),           

    SESSION_COOKIE_NAME = "sessionid"                        # Session cookie         key, :sessionid=     
    SESSION_COOKIE_PATH = "/"                                # Session cookie     
    SESSION_COOKIE_DOMAIN = None                              # Session cookie     
    SESSION_COOKIE_SECURE = False                             #   Https  cookie
    SESSION_COOKIE_HTTPONLY = True                            #   Session cookie   http  
    SESSION_COOKIE_AGE = 1209600                              # Session cookie    (2 )
    SESSION_EXPIRE_AT_BROWSER_CLOSE = False                   #          Session  
    SESSION_SAVE_EVERY_REQUEST = False                        #          Session,         

b.   

      

3.파일 세 션
a.    settings.py

    SESSION_ENGINE = 'django.contrib.sessions.backends.file'    #   
    SESSION_FILE_PATH = None                                    #       ,   None,   tempfile          tempfile.gettempdir()                                                            #  :/var/folders/d3/j9tj0gz93dg06bmwxmhh6_xm0000gn/T


    SESSION_COOKIE_NAME = "sessionid"                          # Session cookie         key, :sessionid=     
    SESSION_COOKIE_PATH = "/"                                  # Session cookie     
    SESSION_COOKIE_DOMAIN = None                                # Session cookie     
    SESSION_COOKIE_SECURE = False                               #   Https  cookie
    SESSION_COOKIE_HTTPONLY = True                              #   Session cookie   http  
    SESSION_COOKIE_AGE = 1209600                                # Session cookie    (2 )
    SESSION_EXPIRE_AT_BROWSER_CLOSE = False                     #          Session  
    SESSION_SAVE_EVERY_REQUEST = False                          #          Session,         

b.   

      

4.캐 시+데이터베이스 세 션
a.    settings.py

    SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db'        #   

b.   

      

5.암호 화 쿠키 세 션
a.    settings.py

    SESSION_ENGINE = 'django.contrib.sessions.backends.signed_cookies'   #   

b.   

      

데이터베이스 작업 과 마찬가지 로 Django 에서 서로 다른 캐 시 방식 의 사용 방법 은 일치 합 니 다.캐 시 형식 을 바 꾸 려 면 상기 설정 만 바 꾸 면 됩 니 다.
더 많은 참고:https://docs.djangoproject.com/en/1.11/topics/http/sessions/ 화해시키다https://docs.djangoproject.com/en/1.11/ref/settings/#settings-sessions
확장:세 션 사용자 인증(장식 기)
def login(func):
    def wrap(request, *args, **kwargs):
        #      ,       
        if request.path == '/test/':
            return redirect('http://www.baidu.com')
        return func(request, *args, **kwargs)
    return wrap

좋은 웹페이지 즐겨찾기