37👍
✅
Assuming you want database based sessions (Django also offers file based sessions, and cache based sessions):
- Open settings.py and find
MIDDLEWARE_CLASSES
. Add'django.contrib.sessions.middleware.SessionMiddleware'
to the list. - Find
INSTALLED_APPS
in the same file and add'django.contrib.sessions'
there. - Run
manage.py syncdb
from the command line.
After the initial setup you can use request.session
in your views to store information between requests.
For example this will store the information:
request.session['name'] = 'Ludwik'
and you can retrieve it as easly:
print request.session['name']
or
if request.session['name'] == 'Ludwik':
print 'you are awesome!'
For other things you can do with the request.session
object see the documentation.
3👍
MIDDLEWARE_CLASSES should have −
'django.contrib.sessions.middleware.SessionMiddleware'
INSTALLED_APPS should have −
'django.contrib.sessions'
Change our login view to save our username cookie server side −
def login(request):
username = 'not logged in'
if request.method == 'POST':
MyLoginForm = LoginForm(request.POST)
if MyLoginForm.is_valid():
username = MyLoginForm.cleaned_data['username']
request.session['username'] = username
else:
MyLoginForm = LoginForm()
return render(request, 'loggedin.html', {"username" : username}
create formView view for the login form, where we won’t display the form if cookie is set −
def formView(request):
if request.session.has_key('username'):
username = request.session['username']
return render(request, 'loggedin.html', {"username" : username})
else:
return render(request, 'login.html', {})
change the url.py file to change the url so it pairs with our new view −
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'))
url(r'^logout/', 'logout', name = 'logout'),
create a simple logout view that erases our cookie.
def logout(request):
try:
del request.session['username']
except:
pass
return HttpResponse("<strong>You are logged out.</strong>")
- How can my Model primary key start with a specific number?
- Django: set cookie on test client?
- Django and Long Polling
- Django template for loop
Source:stackexchange.com