Python django的登录会话

Python django的登录会话,python,django,session,Python,Django,Session,我正在尝试在我的web应用程序中设置登录会话,但无法使其工作。我是django新手,阅读了会话文档,但没有连接到我的web应用程序。目前我只想检查用户是否登录,如果没有,则重定向到登录页面 下面是我试图合并登录会话的代码 设置.py INSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sess

我正在尝试在我的web应用程序中设置登录会话,但无法使其工作。我是django新手,阅读了会话文档,但没有连接到我的web应用程序。目前我只想检查用户是否登录,如果没有,则重定向到登录页面

下面是我试图合并登录会话的代码

设置.py

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'logins',
    'dashboards'
)

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
)
url.py

    from django.conf.urls import patterns, include, url
    from django.conf import settings
    from django.conf.urls.static import static
    from django.contrib import admin
    admin.autodiscover()

    urlpatterns = patterns('',
        url(r'^$', 'logins.views.login', name='login'),
        url(r'^accounts/auth/$', 'logins.views.auth_view', name='auth_view'),
        url(r'^accounts/dashboard/$', 'dashboards.views.dashboard', name='dashboard'),
        url(r'^accounts/logout/$', 'logins.views.logout', name='logout'),
        url(r'^accounts/invalid/$', 'logins.views.invalid', name='invalid'),
用于登录的views.py

    from django.shortcuts import render, render_to_response, RequestContext
    from django.http import HttpResponseRedirect, HttpResponse
    from django.contrib import auth
    from django.core.context_processors import csrf

    def login(request):
        c = {}
        c.update(csrf(request))
        return render_to_response('login.html', c)

    def auth_view(request):
        username = request.POST.get('username', '')
        password = request.POST.get('password', '')
        user = auth.authenticate(username=username, password=password)

        if user is not None and user.is_active:
            auth.login(request, user)
            return HttpResponseRedirect('/accounts/dashboard')
        else:
            return HttpResponseRedirect('/accounts/invalid')

    def logout(request):
        auth.logout(request)
        return render_to_response('logout.html')

    def invalid(request):
        return render_to_response('invalid.html')
正在登录的仪表板应用程序的views.py

from django.shortcuts import render, render_to_response, RequestContext
from django.http import HttpResponseRedirect, HttpResponse
from django.contrib import auth
from django.core.context_processors import csrf

def dashboard(request):
    return render_to_response('dashboard.html')

您可以使用Django的内置身份验证系统,该系统负责检查用户是否登录。您可以使用登录所需的装饰器

views.py


在django中执行此操作非常简单: 在本例中,会话将保存在数据库中(您必须将django应用程序与数据库同步)

用户登录:

from django.contrib.auth.models import User
from django.contrib.auth import authenticate, login
if request.method == 'POST':
    username = request.POST.get('nickname','')
    password = request.POST.get('password','')
    user = authenticate(username=username, password=password)
        if user is not None:
            if user.is_active:
                request.session.set_expiry(86400) #sets the exp. value of the session 
                login(request, user) #the user is now logged in
对于其他站点(需要登录的站点):

或者使用
登录\u require
-装饰器:

from django.contrib.auth.decorators import login_required

@login_required
def my_func(request):
    print(user.id) #the user is loggedin

有没有什么特别的原因让你不去看电影?如果用户未登录到登录页面,它具有重定向用户的功能。@rbonick链接已失效。@MateuszPiotrowski我猜他们想链接到登录页面
def my_func(request):
    if request.user.is_authenticated():
        print (user.id) #the user is loggedin
from django.contrib.auth.decorators import login_required

@login_required
def my_func(request):
    print(user.id) #the user is loggedin