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

本文实例讲述了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程序设计有所帮助。

(0)

相关推荐

  • django 通过ajax完成邮箱用户注册、激活账号的方法

    一.图片验证码 django-simple-captcha配置 1.在pycharm中,File====>Settings====>Project:项目名====>Project Interpreter====>+====>搜django-simple-captcha 选择0.55以上版本,然后点install package 按钮进行安装 2.项目名/urls.py中添加代码: from django.urls import path,include ...... from

  • 在Django中限制已登录用户的访问的方法

    有很多原因需要控制用户访问站点的某部分. 一个简单原始的限制方法是检查 request.user.is_authenticated() ,然后重定向到登陆页面: from django.http import HttpResponseRedirect def my_view(request): if not request.user.is_authenticated(): return HttpResponseRedirect('/accounts/login/?next=%s' % reque

  • Django利用cookie保存用户登录信息的简单实现方法

    本文实例讲述了Django利用cookie保存用户登录信息的方法.分享给大家供大家参考,具体如下: 设置cookie response对象.set_cookie('key','value',多少秒后过期) 获取cookie request对象.COOKIES.get('key') 我们继续前一篇的代码 def hi(request): msg = {'result':''} loginSuccess = False # 是否登录成功标识 if user.userLogin(request.POS

  • Django1.7+JQuery+Ajax验证用户注册集成小例子

    Ajax的出现让Web展现了更新的活力,基本所有的语言,都动态支持Ajax与起服务端进行通信,并在页面实现无刷新动态交互. 下面是散仙使用Django+Jquery+Ajax的方式来模拟实现了一个验证用户注册时,用户名存在不存在的一个小应用.注意,验证存在不存在使用的是Ajax的方式,不用让用户点击按钮验证是否存在. 截图如下: 页面HTML代码如下: <!DOCTYPE html> <html> <head lang="en"> <meta

  • django实现用户注册实例讲解

    创建一个apps包 专门来放子应用 创建users子应用 处理用户事务 追加导包路径 在settings中用 print(sys.path) 查看现有导包路径 sys.path.insert(0,'/home/python/oldproject/meiduo/meiduo/apps') 但是这样过于low 换成下面这样 sys.path.insert(0,os.path.join(BASE_DIR,'apps')) 这样就可以简化导包方式 自定义用户模型类 django自带的用户模型类User

  • 在Django中进行用户注册和邮箱验证的方法

    本文主要介绍我在利用Django写文章时,采用的注册方法.首先说一下整体逻辑思路: •处理用户注册数据, •产生token,生成验证URL, •发送验证邮件, •用户登录网址,进行验证, •验证处理. 具体步骤: 1.添加用户 在Django中自带的User表中,有一个is_active字段,默认值是True,即用户填完表单提交之后,就可以进行登录.我们这里首先将is_acitve字段设为False,也就是说,必须经过后续的邮箱验证,才能够正常登录. 部分代码: if request.metho

  • django用户注册、登录、注销和用户扩展的示例

    用户部分是一个网站的基本功能,django对这部分进行了很好的封装,我们只需要在django的基础上做些简单的修改就可以达到我们想要的效果 首先我假设你对django的session.cookie和数据库.admin部分都有一定的了解,不了解的可以参考这个教程:http://djangobook.py3k.cn/2.0/ 1.用户登录: 首先假设有这样的登录界面: 处理登录的视图代码如下: def userLogin(request): curtime=time.strftime("%Y-%m-

  • 详解Django框架中用户的登录和退出的实现

    Django 提供内置的视图(view)函数用于处理登录和退出 (以及其他奇技淫巧),但在开始前,我们来看看如何手工登录和退出. Django提供两个函数来执行django.contrib.auth\中的动作 : authenticate()和login(). 认证给出的用户名和密码,使用 authenticate() 函数.它接受两个参数,用户名 username 和 密码 password ,并在密码对给出的用户名合法的情况下返回一个 User 对象. 如果密码不合法,authenticat

  • Django小白教程之Django用户注册与登录

    Django 是由 Python 开发的一个免费的开源网站框架,可以用于快速搭建高性能,优雅的网站! 学习django学得超级吃力,最近弄个最简单的用户登录与注册界面都是那么难,目前算是基本实现了,虽然功能特别特别简单但是做一个记录,以后学习深入了再来补充: 首先创建项目,到项目所在目录:django-admin startproject demo0414_userauth 进入项目:cd demo0414_userauth 创建相应的app:django-admin startapp acco

  • Django实战之用户认证(用户登录与注销)

    上一篇中,我们已经打开了Django自带的用户认证模块,并配置了数据库连接,创建了相应的表,本篇我们将在Django自带的用户认证的基础上,实现自己个性化的用户登录和注销模块. 首先,我们自己定义一个用户登录表单(forms.py): from django import forms from django.contrib.auth.models import User from bootstrap_toolkit.widgets import BootstrapDateInput, Boots

  • Python通过Django实现用户注册和邮箱验证功能代码

    本文主要向大家分享了Python编程中通过Django模块实现用户注册以及邮箱验证功能的简单介绍及代码实现,具体如下. 用户注册: 类似于用户登陆,同样在users.views.py中添加RegisterView(View)类,其中对表单的get和post作出处理. 如果是get方法,重新返回register页面让用户进行填写. def get(self, request): register_form = RegisterForm() return render(request, "regis

随机推荐