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 21 Python
Python语言描述最大连续子序列和
Dec 05 Python
详解Python异常处理中的Finally else的功能
Dec 29 Python
Django1.9 加载通过ImageField上传的图片方法
May 25 Python
python 画三维图像 曲面图和散点图的示例
Dec 29 Python
详解python的四种内置数据结构
Mar 19 Python
用Python+OpenCV对比图像质量的几种方法
Jul 15 Python
安装2019Pycharm最新版本的教程详解
Oct 22 Python
python类中super() 的使用解析
Dec 19 Python
Python代码中如何读取键盘录入的值
May 27 Python
Selenium关闭INFO:CONSOLE提示的解决
Dec 07 Python
Python爬虫基础初探selenium
May 31 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
一个SQL管理员的web接口
2006/10/09 PHP
php面向对象全攻略 (五) 封装性
2009/09/30 PHP
10款实用的PHP开源工具
2015/10/23 PHP
php中get_magic_quotes_gpc()函数说明
2017/02/06 PHP
PHP+jQuery实现双击修改table表格功能示例
2019/02/21 PHP
JavaScript传递变量: 值传递?引用传递?
2011/02/22 Javascript
js三种排序算法分享
2012/08/16 Javascript
js中apply方法的使用详细解析
2013/11/04 Javascript
jquery实现下拉菜单的二级联动利用json对象从DB取值显示联动
2014/03/27 Javascript
Node.js的特点和应用场景介绍
2014/11/04 Javascript
jQuery使用hide方法隐藏页面上指定元素的方法
2015/03/30 Javascript
用js编写的简单的计算器代码程序
2015/08/04 Javascript
javascript字符串函数汇总
2015/12/06 Javascript
简单掌握JavaScript中const声明常量与变量的用法
2016/05/21 Javascript
js css自定义分页效果
2017/02/24 Javascript
使用jQuery实现简单的tab框实例
2017/08/22 jQuery
vue 使用Jade模板写html,stylus写css的方法
2018/02/23 Javascript
Node.js API详解之 timer模块用法实例分析
2020/05/07 Javascript
JavaScript实现网页跨年倒计时
2020/12/02 Javascript
python连接MySQL数据库实例分析
2015/05/12 Python
windows 10下安装搭建django1.10.3和Apache2.4的方法
2017/04/05 Python
Tensorflow简单验证码识别应用
2017/05/25 Python
python提取照片坐标信息的实例代码
2019/08/14 Python
Python3搭建http服务器的实现代码
2020/02/11 Python
CSS3中的Media Queries学习笔记
2016/05/23 HTML / CSS
俄罗斯玩具、儿童用品、儿童服装和鞋子网上商店:MyToys.ru
2019/10/14 全球购物
意大利网上购书网站:Libraccio.it
2021/02/03 全球购物
观看《永远的雷锋》心得体会
2014/03/12 职场文书
社团活动总结
2014/04/28 职场文书
班级出游活动计划书
2014/08/15 职场文书
高中升旗仪式演讲稿
2014/09/09 职场文书
党员群众路线整改措施及今后努力方向
2014/10/28 职场文书
音乐教师个人工作总结
2015/02/06 职场文书
汽车修理厂管理制度
2015/08/05 职场文书
保险公司2016开门红口号集锦
2015/12/24 职场文书
Java使用httpRequest+Jsoup爬取红蓝球号码
2021/07/02 Java/Android