English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
때때로, 웹 애플리케이션의 요구에 따라 방문자의 일부 데이터를 각 사이트에 저장할 수 있습니다. 항상 기억하시기 바랍니다, 쿠키는 클라이언트에 저장되며, 클라이언트 브라우저의 보안 수준에 따라 쿠키의 유효 기간을 설정할 수 있으며, 필요하지 않을 수도 있습니다.
Django에서 쿠키 처리 방법을 설명하기 위해, 이전에 생성한 로그인 기능을 사용하는 시스템을 만들어 보겠습니다. 시스템은 x분 동안 로그인을 허용하고, 이 시간이 지나면 애플리케이션이 자동으로 로그인 정보를 로그아웃합니다.
이를 위해, 두 개의 쿠키를 설정해야 합니다: last_connection과 username.
먼저, 우리는 로그인 뷰를 변경하여 사용자 이름과 last_connection 쿠키를 저장하도록 하겠습니다.
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ko.oldtoolbag.com # Date : 2020-08-08 from django.template import RequestContext def login(request): username = "not logged in" if request.method == "POST": #Get the posted form MyLoginForm = LoginForm(request.POST) if MyLoginForm.is_valid(): username = MyLoginForm.cleaned_data['username'] else: MyLoginForm = LoginForm() response = render_to_response(request, 'loggedin.html', {"username": username}, context_instance = RequestContext(request)) response.set_cookie('last_connection', datetime.datetime.now()) response.set_cookie('username', datetime.datetime.now()) return response
위의 뷰와 같이, Cookie는 setcookie 메서드로 설정되며, 요청 응답 대신 설정되고, 모든 Cookie 값은 문자열로 반환됩니다.
로그인 양식을 위한 FormView를 만들어 보겠습니다. Cooki가 설정되어 있고10초 내에서 −
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ko.oldtoolbag.com # Date : 2020-08-08 def formView(request): if 'username' in request.COOKIES and 'last_connection' in request.COOKIES: username = request.COOKIES['username'] last_connection = request.COOKIES['last_connection'] last_connection_time = datetime.datetime.strptime(last_connection[:-7], "%Y-%m-%d %H:%M:%S") if (datetime.datetime.now(), - last_connection_time).seconds < 10: return render(request, 'loggedin.html', {"username": username}) else: return render(request, 'login.html', {}) else: return render(request, 'login.html', {})
formView 뷰에서 설정한 쿠키를 접근할 수 있으며, 요청의 COOKIES 클래스 속성(사전)을 통해 완료할 수 있습니다.
지금 url.py 파일을 수정하여 URL을 변경하고 새로운 뷰를 매칭하십시오 -
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ko.oldtoolbag.com # Date : 2020-08-08 from django.conf.urls import patterns, url from django.views.generic import TemplateView urlpatterns = patterns('myapp.views', url(r'^connection/','formView', name = 'loginform'), url(r'^login/', 'login', name = 'login'))
접근할 때 /myapp/연결, 다음 페이지로 이동하게 됩니다-
제출 후 다음 인터페이스로 리디렉션됩니다 -
지금, 만약 당신이10초 내에 방문 /myapp/연결 한 번, 두 번째 스크린으로 직접 리디렉션됩니다. 다시 방문하면 /myapp/연결 범위를 벗어나면 로그인 폼(스크린1)。