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进行一些简单的自然语言处理的教程
Mar 31 Python
Python出现segfault错误解决方法
Apr 16 Python
Python实用技巧之利用元组代替字典并为元组元素命名
Jul 11 Python
学生信息管理系统python版
Oct 17 Python
Python 处理图片像素点的实例
Jan 08 Python
Python中typing模块与类型注解的使用方法
Aug 05 Python
python中栈的原理及实现方法示例
Nov 27 Python
python操作cfg配置文件方式
Dec 22 Python
django在保存图像的同时压缩图像示例代码详解
Feb 11 Python
Python正则表达式学习小例子
Mar 03 Python
python使用openpyxl库读写Excel表格的方法(增删改查操作)
May 02 Python
python读取并查看npz/npy文件数据以及数据显示方法
Apr 14 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
别人整理的服务器变量:$_SERVER
2006/10/20 PHP
php使用imagick模块实现图片缩放、裁剪、压缩示例
2014/04/17 PHP
phpmailer发送邮件之后,返回收件人是否阅读了邮件的方法
2014/07/19 PHP
PHP批量修改文件名称的方法分析
2017/02/27 PHP
PHP生成腾讯云COS接口需要的请求签名
2018/05/20 PHP
如何简单地用YUI做JavaScript动画
2007/03/10 Javascript
javascript 数组学习资料收集
2010/04/11 Javascript
javascript操纵OGNL标签示例代码
2014/06/16 Javascript
[55:42]VG vs VGJ.T 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
Python 元组(Tuple)操作详解
2014/03/11 Python
Python中处理字符串之isalpha()方法的使用
2015/05/18 Python
Python写的一个简单监控系统
2015/06/19 Python
Python xlwt设置excel单元格字体及格式
2020/04/18 Python
Python+OpenCV实现车牌字符分割和识别
2018/03/31 Python
对Python3 goto 语句的使用方法详解
2019/02/16 Python
python的turtle库使用详解
2019/05/10 Python
selenium获取当前页面的url、源码、title的方法
2019/06/12 Python
python中PS 图像调整算法原理之亮度调整
2019/06/28 Python
python自动保存百度盘资源到百度盘中的实例代码
2019/08/26 Python
关于Python3 lambda函数的深入浅出
2019/11/27 Python
python 字段拆分详解
2019/12/17 Python
Python autoescape标签用法解析
2020/01/17 Python
HTML5里autofocus自动聚焦属性使用介绍
2016/06/22 HTML / CSS
意大利奢侈品网站:Italist
2016/08/23 全球购物
德国EGOIST网店:销售畅销的设计师品牌
2017/04/18 全球购物
罗马尼亚在线杂货店:Pilulka.ro
2019/09/28 全球购物
八一建军节感言
2014/02/28 职场文书
2014年党员公开承诺书范文
2014/03/28 职场文书
竞聘演讲稿
2014/04/24 职场文书
关于旅游的活动方案
2014/08/15 职场文书
标准离婚协议书(2014版)
2014/10/05 职场文书
劳资员岗位职责
2015/02/13 职场文书
优秀学生主要事迹怎么写
2015/11/04 职场文书
终止合同协议书范本
2016/03/22 职场文书
Python开发之QT解决无边框界面拖动卡屏问题(附带源码)
2021/05/27 Python
springboot用户数据修改的详细实现
2022/04/06 Java/Android