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实现从字符串中找出字符1的位置以及个数的方法
Aug 25 Python
使用XML库的方式,实现RPC通信的方法(推荐)
Jun 14 Python
Python实现破解猜数游戏算法示例
Sep 25 Python
基于python list对象中嵌套元组使用sort时的排序方法
Apr 18 Python
浅谈利用numpy对矩阵进行归一化处理的方法
Jul 11 Python
对Python中实现两个数的值交换的集中方法详解
Jan 11 Python
python实现名片管理系统项目
Apr 26 Python
Python 实现还原已撤回的微信消息
Jun 18 Python
Pyqt5 基本界面组件之inputDialog的使用
Jun 25 Python
OpenCV里的imshow()和Matplotlib.pyplot的imshow()的实现
Nov 25 Python
tensorflow之并行读入数据详解
Feb 05 Python
Django Path转换器自定义及正则代码实例
May 29 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
PHP常用编译参数中文说明
2014/09/27 PHP
PHP图片处理之图片旋转和图片翻转实例
2014/11/19 PHP
MacOS 安装 PHP的图片裁剪扩展Tclip
2015/03/25 PHP
Laravel5.1 框架路由基础详解
2020/01/04 PHP
深入分析PHP设计模式
2020/06/15 PHP
jquery触发a标签跳转事件示例代码
2013/07/21 Javascript
javascript使用百度地图api和html5特性获取浏览器位置
2014/01/10 Javascript
js实现jquery的offset()方法实例
2015/01/10 Javascript
JavaScript中数据结构与算法(三):链表
2015/06/19 Javascript
对Js OOP编程 创建对象的一些全面理解
2016/07/26 Javascript
AngularJS基础 ng-disabled 指令详解及简单示例
2016/08/01 Javascript
jQuery实现的简单拖动层示例
2017/02/22 Javascript
jQuery EasyUI Panel面板组件使用详解
2017/02/28 Javascript
vue快捷键与基础指令详解
2017/06/01 Javascript
vue-router权限控制(简单方式)
2018/10/29 Javascript
js canvas实现写字动画效果
2018/11/30 Javascript
vue实现的组件兄弟间通信功能示例
2018/12/04 Javascript
Vue插件从封装到发布的完整步骤记录
2019/02/28 Javascript
JS实现简单打字测试
2020/06/24 Javascript
复制粘贴功能的Python程序
2008/04/04 Python
以911新闻为例演示Python实现数据可视化的教程
2015/04/23 Python
Python测试网络连通性示例【基于ping】
2018/08/03 Python
CSS3 实用技巧:实现黑白图像效果示例代码
2013/07/11 HTML / CSS
Europcar德国:全球汽车租赁领域的领导者
2018/08/15 全球购物
Gibson London官网:以地道的英国男装而著称
2019/12/06 全球购物
瑞士首家网上药店折扣店:McDrogerie
2020/12/22 全球购物
教你怎样写好自我评价
2013/10/05 职场文书
求职推荐信范文
2013/12/01 职场文书
优秀辅导员事迹材料
2014/02/16 职场文书
竞选大队长演讲稿
2014/04/29 职场文书
总经理岗位职责说明书
2014/07/30 职场文书
孩子教育的心得体会
2014/09/01 职场文书
优秀教师自我评价范文
2014/09/27 职场文书
2016秋季田径运动会广播稿
2015/12/21 职场文书
创业计划书之美容店
2019/09/16 职场文书
python实战之一步一步教你绘制小猪佩奇
2021/04/22 Python