8:django sessions(세션)
9949 단어 session
django는 익명 세션에 대한 전방위적인 지원을 제공합니다. 세션 프레임워크는 모든 사이트 방문자의 임의의 데이터를 저장하고 검색할 수 있습니다.세션 데이터는 서버에 저장되고 쿠키를 보내고 받아들이는 과정을 간단하게 설명합니다. 쿠키는 데이터 자체가 아니라session ID만 포함합니다. 쿠키 백업을 기반으로 한 세션을 사용하지 않는 한.
다음은 세션 프레임워크를 어떻게 사용하는지 살펴봅시다.
세션 사용
회화는 중간부품을 통해 이루어진다.세션 기능을 활성화하려면 MIDDLEWARECLASSES 가입django.contrib.sessions.middleware.Session Middleware는 OK.
만약django-admin을 사용한다면.py startproject에서 만든 프로젝트는 기본적으로 이 기능을 사용합니다.sessions 기능을 사용하지 않으려면 MIDDLEWARECLASS에서 해당 항목을 제거합니다.
그리고installedapps에서sessions를 제거하면 데이터베이스 공간을 조금 절약할 수 있습니다
세션 엔진 구성
기본django는 데이터베이스에 세션을 저장합니다 (django.contrib.sessions.models.Session 모형을 사용합니다)
비록 이것은 매우 편리하지만, 어떤 때는 세션을 다른 곳에 저장하면 접근이 더욱 빨라질 수 있다. 다음은 각종 세션 엔진을 설정하는 방법을 살펴보자
데이터베이스에서 지원하는 세션 사용
기본적으로 사용하는 방법은django가 필요합니다.contrib.INSTALLED 에 sessions 추가APPS 설정에
그리고 관리자를 실행합니다.py syncdb 데이터베이스에서 대응하는 테이블 생성
캐시된 세션 사용
시스템을 더 잘 하려면 캐시 기반 백엔드 처리를 고려할 수 있지만, 캐시를 사용하려면 먼저 캐시를 설정해야 한다
캐시를 설정하면 캐시에 데이터를 저장하는 두 가지 선택이 있습니다
주의,cacheddb도 데이터베이스에 사용해야 합니다. 위에서 데이터베이스에서 지원하는 세션을 참고하세요.
파일 기반 세션 사용
파일 기반 세션을 사용하려면 SESSIONENGIN을 django로 설정합니다.contrib.sessions.backends.file, 그리고 SESSION을 설정해야 할 수도 있습니다FILE_PATH는django 메모리 세션을 제어하는 곳에 가서django 서버가 그 위치를 읽을 수 있는 권한이 있는지 확인하십시오
쿠키 기반 세션 사용
쿠키 기반 세션을 사용하려면 SESSIONENGIN을 django로 설정합니다.contrib.sessions.backends.signed_cookies, 그 세션 데이터는django의 암호화 서명 도구와SECRET 를 사용합니다KEY가 데이터를 저장합니다.
팁: SESSIONCOOKIE_HTTPONLY=True, 자바스크립트에 저장된 데이터에 접근하는 것을 방지합니다
알림:
세션 중간부품이 활성화되면 Http Request 대상 - 각django 보기 함수의 첫 번째 인자 - 세션 속성이 있습니다. 이것은 사전과 유사한 대상입니다. 보기 함수 안의 어느 곳에서든 Request를 사용할 수 있습니다.session, 여러 번 사용 가능
다음 위조 코드는session의 표준 사전 방법을 보여 줍니다
class backends.base.SessionBase
# ,
__getitem__(key)
#Example: fav_color = request.session['fav_color']
__setitem__(key, value)
#Example: request.session['fav_color'] = 'blue'
__delitem__(key)
#Example: del request.session['fav_color']. key , , keyError
__contains__(key)
#Example: 'fav_color' in request.session, bool
get(key, default=None)
#Example: fav_color = request.session.get('fav_color', 'red'), get fav_color session,fav_color=red
pop(key)
#Example: fav_color = request.session.pop('fav_color')
#
keys()
items()
setdefault()
clear()
#
flush()
# cookie( ) , key, , django.contrib.auth.logout() 。
set_test_cookie()
# cookie, test_cookie_worked
test_cookie_worked()
# set_test_cookie(), bool
delete_test_cookie()
# cookie
set_expiry(value)
#
# value , , request.session.set_expiry(300)
# datetime timedelta ,
# None,
get_expiry_age()
#
get_expiry_date()
#
get_expire_at_browser_close()
# cookie , bool cookie will expire when the user’s Web browser is closed.
세션 개체 안내서
간단한 사용:session 설정 및 사용
def post_comment(request, new_comment):
if request.session.get('has_commented', False):
return HttpResponse("You've already commented.")
c = comments.Comment(comment=new_comment)
c.save()
request.session['has_commented'] = True
return HttpResponse('Thanks for your comment!')
테스트 쿠키 설정
def login(request):
if request.method == 'POST':
if request.session.test_cookie_worked():
request.session.delete_test_cookie()
return HttpResponse("You're logged in.")
else:
return HttpResponse("Please enable cookies and try again.")
request.session.set_test_cookie()
return render_to_response('foo/login_form.html')
세션 테이블 정리
django는 기한이 지난 세션 데이터를 자동으로 삭제하지 않습니다.django-admin을 실행하십시오.py cleanup 데이터베이스에서 세션 테이블에서 만료된session 삭제
구성 요약
일부 django 설정은session의 행동을 제어할 수 있습니다
SESSION_ENGINE
Default: django.contrib.sessions.backends.db
선택 사항:
SESSION_FILE_PATH
Default: /tmp/
SESSION_COOKIE_AGE
Default: 1209600(2주, 초)
SESSION_COOKIE_DOMAIN
Default: None
예를 들어 ".lawrence.com"과 같습니다.
SESSION_COOKIE_HTTPONLY
Default: True
SESSION_COOKIE_NAME
Default: 'sessionid'
SESSION_COOKIE_PATH
Default: '/'
SESSION_COOKIE_SECURE
Default: False
만약 사실이라면 쿠키는 https에서만 전송됩니다
SESSION_EXPIRE_AT_BROWSER_CLOSE
Default: False
SESSION_SAVE_EVERY_REQUEST
Default: False
요청할 때마다session 데이터를 저장할지 여부
p
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
redis-rails의 세션 만료 거동을 확인하고 플레이로컬로 사이트에 액세스하는 것으로 3개월의 기한 첨부 세션 데이터가 생성되는 설정을 하고 있다. redis 시작 command DB1 선택(설정에 따라 다름) redis-commands 사이트에 접속, 키 일람을 취...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.