Django学习之用户登录

简介:

前面说了,用户注册,今天我们就来说说用户登录吧。今天说的是使用Django的session功能,而不是它的auth模块,后期,如果有机会的话,我再写点auth认证登录。


其实重点就是request.session功能,默认Django就将其session功能打开了,我们仅仅需要的是配置下数据库。


website/settings.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'tc',
        'USER': 'root',
        'PASSWORD': 'password',
        'HOST': '127.0.0.1',
        'PORT':'' ,

    }
}


登录表单(用户登录认证的活,我放在表单里喽):

mysite/forms.py

class LoginForm(forms.Form):
    username = forms.CharField(error_messages={'required':'请输入用户名'})
    password = forms.CharField(widget=forms.PasswordInput,error_messages={'required':'请输入密码'})

    def clean(self):
        cleaned_data=super(LoginForm,self).clean()
        username = cleaned_data.get('username')
        password = cleaned_data.get('password')
        if username and password:
            try:
                member=Register.objects.get(username__exact=username)
            except Register.DoesNotExist:
                self._errors['username'] = self.error_class([u"用户不存在"])
                return
            if member.password != password: 
                self._errors['password'] = self.error_class([u"密码不一致"])
        return cleaned_data


登录与登出

mysite/views.py

def login(request):
    login_user = request.session.get('username',"")
    if login_user:
        return render(request,"login.html",{'username':login_user})
        
    if request.method == 'POST':
        loginform = LoginForm(request.POST,error_class=DivErrorList) 
        if loginform.is_valid():
            request.session['username']=loginform.cleaned_data['username']
            return render(request,"login.html",{'username':request.session['username']}) 
    else:
        loginform = LoginForm()
    return render(request,"login.html",{'loginform':loginform})


def logout(request):
    login_user = request.session.get('username',"")
    if login_user:
        del request.session['username']
    else:
        loginform = LoginForm()
        return render(request,"login.html",{'loginform':loginform})
    return HttpResponse("登出成功!<a href='/login/'>登录</a>")

模板:

mysite/templates/login.html

{% extends "base.html" %}

{% block title %}
用户登录
{% endblock %}

{% block content %}

{% if not username %}

<form action="/login/" method="POST">
{% csrf_token %}
用户登录</br>
用户名:` loginform`.`username `{{ loginform.username.errors|safe}}</br>
密码:` loginform`.`password `{{ loginform.password.errors|safe}}</br>
<input type="submit" value="登录"/>
</form>
{% else %}
欢迎管理员:`username`,<a href="/logout/">登出</a>
{% endif %}
{% endblock %}


导向

website/urls.py

    url(r'^login/','mysite.views.login'),
    url(r'^logout/','mysite.views.logout'),
    url(r'^success/(?P<name>\w+)/$','mysite.views.success'),


有了这些,我们便可以实现用户登录了,并且做了相应的检验,就这么简单...



本文转自hahazhu0634 51CTO博客,原文链接:http://blog.51cto.com/5ydycm/1657650,如需转载请自行联系原作者

相关文章
|
7月前
|
存储 缓存 数据库
Django框架学习(四)
Django框架学习(四)
|
7月前
|
前端开发 关系型数据库 MySQL
Django框架学习(三)
Django框架学习(三)
|
7月前
|
JSON 前端开发 数据库
Django框架学习(一)
Django框架学习(一)
|
4月前
|
调度 Apache 数据库
Django 学习教程-第一个 Django 应用
本章主要讲述了如何创建一个Django项目,以一个投票案例程序介绍了Django的请求和响应流程。
51 1
|
4月前
|
Python
Django 学习教程-介绍与安装
本章介绍了Django是什么,以及为什么使用Django和安装Django
40 1
Django 学习教程-介绍与安装
|
9月前
|
Python
【Django学习】(十六)session_token认证过程与区别_响应定制
【Django学习】(十六)session_token认证过程与区别_响应定制
|
5月前
|
前端开发 数据库 网络架构
Python Django框架中文教程:学习简单、灵活、高效的Web应用程序框架
Python Django框架中文教程:学习简单、灵活、高效的Web应用程序框架
|
7月前
|
存储 NoSQL 中间件
Django框架学习(二)
Django框架学习(二)
|
7月前
|
关系型数据库 MySQL 数据库
基于 Python Django 的在线编程学习平台(仿慕课网)
基于 Python Django 的在线编程学习平台(仿慕课网)
|
9月前
|
JSON API 数据安全/隐私保护
【Django学习】(十五)API接口文档平台_项目流程分析_日志器_认证_授权
【Django学习】(十五)API接口文档平台_项目流程分析_日志器_认证_授权