django 框架实现的用户注册、登录、退出功能示例


Posted in Python onNovember 28, 2019

本文实例讲述了django 框架实现的用户注册、登录、退出功能。分享给大家供大家参考,具体如下:

1 用户注册:

from django.contrib import auth
from django.contrib.auth.models import User
from django.views.decorators.csrf import csrf_exempt
from django.http import HttpResponseRedirect
# 用户注册
@csrf_exempt
def register(request):
  errors = []
  account = None
  password = None
  password2 = None
  email = None
  CompareFlag = False
  if request.method == 'POST':
    if not request.POST.get('account'):
      errors.append('用户名不能为空')
    else:
      account = request.POST.get('account')
    if not request.POST.get('password'):
      errors.append('密码不能为空')
    else:
      password = request.POST.get('password')
    if not request.POST.get('password2'):
      errors.append('确认密码不能为空')
    else:
      password2 = request.POST.get('password2')
    if not request.POST.get('email'):
      errors.append('邮箱不能为空')
    else:
      email = request.POST.get('email')
    if password is not None:
      if password == password2:
        CompareFlag = True
      else:
        errors.append('两次输入密码不一致')
    if account is not None and password is not None and password2 is not None and email is not None and CompareFlag :
      user = User.objects.create_user(account,email,password)
      user.save()
      userlogin = auth.authenticate(username = account,password = password)
      auth.login(request,userlogin)
      return HttpResponseRedirect('/blog')
  return render(request,'blog/register.html', {'errors': errors})

2 用户登录:

@csrf_exempt
def my_login(request):
  errors =[]
  account = None
  password = None
  if request.method == "POST":
    if not request.POST.get('account'):
      errors.append('用户名不能为空')
    else:
      account = request.POST.get('account')
    if not request.POST.get('password'):
      errors = request.POST.get('密码不能为空')
    else:
      password = request.POST.get('password')
    if account is not None and password is not None:
      user = auth.authenticate(username=account,password=password)
      if user is not None:
        if user.is_active:
          auth.login(request,user)
          return HttpResponseRedirect('/blog')
        else:
          errors.append('用户名错误')
      else:
        errors.append('用户名或密码错误')
  return render(request,'blog/login.html', {'errors': errors})

3 用户退出:

def my_logout(request):
  auth.logout(request)
  return HttpResponseRedirect('/blog')

URL:

urlpatterns = [
  url(r'^$', views.index, name='index'),
  url(r'^p/(?P<article_id>[0-9]+)/$', views.detail,name='detail'),
  url(r'^register/$',views.register, name='register'),
  url(r'^login/$',views.my_login, name='my_login'),
  url(r'^logout/$',views.my_logout, name='my_logout'),
]

注册 HTML:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
{% if errors %}
    <li>
      {% for error in errors %}
       <p style="color: red;">
        {{error}}
       </p>
       {% endfor %}
    </li>
  {% endif %}
<table>
  <form action="" method="post">{% csrf_token %}
    <tr>
      <td>
        <label >用户名:</label>
      </td>
      <td>
        <input type = 'text' placeholder="输入用户名" name = 'account'>
      </td>
    </tr>
    <tr>
      <td>
        <label >密码:</label>
      </td>
      <td>
       <input type = 'password' placeholder="输入密码" name = 'password'>
      </td>
    </tr>
     <tr>
       <td>
        <label >确认密码:</label>
       </td>
       <td>
         <input type = 'password' placeholder="再次输入密码" name ='password2'>
       </td>
     </tr>
     <tr>
       <td>
         <label>邮箱:</label>
       </td>
       <td>
         <input type="email" placeholder="输入邮箱" name = 'email'>
       </td>
     </tr>
     <tr>
       <td>
          <input type = 'submit' placeholder="Login" value="登录">
       </td>
     </tr>
  </form>
</table>
</body>
</html>

登录HTML:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>登录</title>
</head>
<body>
{% if errors %}
    <li>
      {% for error in errors %}
       <p style="color: red;">
        {{error}}
       </p>
       {% endfor %}
    </li>
  {% endif %}
<table>
  <form action="" method="post">{% csrf_token %}
    <tr>
      <td>
        <label >用户名:</label>
      </td>
      <td>
        <input type = 'text' placeholder="输入用户名" name = 'account'>
      </td>
    </tr>
    <tr>
      <td>
        <label >密码:</label>
      </td>
      <td>
       <input type = 'password' placeholder="输入密码" name = 'password'>
      </td>
    </tr>
     <tr>
       <td>
          <input type = 'submit' placeholder="Login" value="登录">
       </td>
     </tr>
  </form>
</table>
</body>
</html>
</body>
</html>

希望本文所述对大家基于Django框架的Python程序设计有所帮助。

Python 相关文章推荐
python中的一些类型转换函数小结
Feb 10 Python
Python for Informatics 第11章之正则表达式(四)
Apr 21 Python
Python实现信用卡系统(支持购物、转账、存取钱)
Jun 24 Python
Python中生成器和迭代器的区别详解
Feb 10 Python
python批量读取txt文件为DataFrame的方法
Apr 03 Python
Python配置虚拟环境图文步骤
May 20 Python
flask 实现token机制的示例代码
Nov 07 Python
Django框架之中间件MiddleWare的实现
Dec 30 Python
如何实现更换Jupyter Notebook内核Python版本
May 18 Python
什么是python类属性
Jun 10 Python
Django之腾讯云短信的实现
Jun 12 Python
解决python 虚拟环境删除包无法加载的问题
Jul 13 Python
python 变量初始化空列表的例子
Nov 28 #Python
在Python中预先初始化列表内容和长度的实现
Nov 28 #Python
python使用 cx_Oracle 模块进行查询操作示例
Nov 28 #Python
在python中创建指定大小的多维数组方式
Nov 28 #Python
python3.x 生成3维随机数组实例
Nov 28 #Python
python返回数组的索引实例
Nov 28 #Python
numpy中三维数组中加入元素后的位置详解
Nov 28 #Python
You might like
用文本文件制作留言板提示(上)
2006/10/09 PHP
Yii框架的路由配置方法分析
2019/09/09 PHP
使用JS操作页面表格,元素的一些技巧
2007/02/02 Javascript
javascript 装载iframe子页面,自适应高度
2009/03/20 Javascript
如何将JS的变量值传递给ASP变量
2012/12/10 Javascript
JavaScript Math.floor方法(对数值向下取整)
2015/01/09 Javascript
jQuery实现图片轮播特效代码分享
2015/09/15 Javascript
原生javascript实现解析XML文档与字符串
2016/03/01 Javascript
浅谈JS继承_借用构造函数 &amp; 组合式继承
2016/08/16 Javascript
Javascript基础回顾之(三) js面向对象
2017/01/31 Javascript
AngularJS 验证码60秒倒计时功能的实现
2017/06/05 Javascript
zTree树形插件异步加载方法详解
2017/06/14 Javascript
JavaScript中的高级函数
2018/01/04 Javascript
微信小程序用户位置权限的获取方法(拒绝后提醒)
2018/11/15 Javascript
PWA介绍及快速上手搭建一个PWA应用的方法
2019/01/27 Javascript
JS实现的自定义map方法示例
2019/05/17 Javascript
Node.js 实现抢票小工具 &amp; 短信通知提醒功能
2019/10/22 Javascript
jQuery实现验证用户登录
2019/12/10 jQuery
react使用antd表单赋值,用于修改弹框的操作
2020/10/29 Javascript
js实现类选择器和name属性选择器的示例步骤
2021/02/07 Javascript
python局域网ip扫描示例分享
2014/04/03 Python
python学习笔记:字典的使用示例详解
2014/06/13 Python
python进程管理工具supervisor使用实例
2014/09/17 Python
Python中的defaultdict模块和namedtuple模块的简单入门指南
2015/04/01 Python
Python引用模块和查找模块路径
2016/03/17 Python
Python常用数据类型之间的转换总结
2019/09/06 Python
python GUI模拟实现计算器
2020/06/22 Python
Selenium获取登录Cookies并添加Cookies自动登录的方法
2020/12/04 Python
捷克建筑材料网上商店:DEK.cz
2021/03/06 全球购物
委托与事件是什么关系?为什么要使用委托
2014/04/18 面试题
当当网软件测试笔试题
2015/11/24 面试题
2014年党的群众路线整改措施思想汇报
2014/10/12 职场文书
骨干教师个人总结
2015/02/11 职场文书
大学生心理健康活动总结
2015/05/08 职场文书
2015年手术室工作总结
2015/05/11 职场文书
护士自荐信范文(2016推荐篇)
2016/01/28 职场文书