django实现用户注册、登录、退出

视图

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})

# 用户登录
@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})

# 用户退出
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>

登录

<!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>
时间: 2024-08-26 04:35:30

django实现用户注册、登录、退出的相关文章

django的用户注册登录界面设置

django的用户注册,登录,注销这三个页面可按以下流程创建 在注册页面,填写注册信息,填写完通过POST验证正确性后,保存到后台,注册完成:登录界面填写信息,通过输入信息和数据库对比,若正确,返回登录成功,若错误,报错,同时显示登录界面,并cook缓存用户信息,注销,删除用户信息,登出.

Window上python开发--4.Django的用户登录模块User

在搭建网站和web的应用程序时,用户的登录和管理是几乎是每个网站都必备的.今天主要从一个实例了解以下django本身自带的user模块.本文并不对user进行扩展. 主要使用原生的模块. 1.User模块基础: 在使用user 之前先import到自己的iew中.相当与我们自己写好的models.只不过这个是系统提供的models. from django.contrib.auth.models import User # 导入user模块 1.1User对象属性 User 对象属性:usern

基于xml的用户注册登录案例

用户注册登录 要求:3层框架,使用验证码 1        功能分析 l  注册 l  登录 1.1 JSP页面 l  regist.jsp 注册表单:用户输入注册信息: 回显错误信息:当注册失败时,显示错误信息: l  login.jsp 登录表单:用户输入登录信息: 回显错误信息:当登录失败时,显示错误信息: l  index.jsp 用户已登录:显示当前用户名,以及"退出"链接: 用户未登录:显示"您还没有登录": 1.2 实体类 User: l  Strin

django 注册、登录及第三方接口程序(4):扩展邮箱注册,登录,微博登录

1.邮箱注册 这里需要扩展User,两种解决办法,1,注册时将email字段内容赋给username,这种瞒天过海型的,另一种就是扩展user,这里介绍django1.5的扩展方法. 1.setting配置 AUTH_USER_MODEL = 'manager.MyUser' # 扩展表的位置,appname.Model, MyUser是manager app下models中的用户类 AUTHENTICATION_BACKENDS = ('django.contrib.auth.backends

超全面的JavaWeb笔记day14&lt;用户注册登录&gt;

案例:用户注册登录 要求:3层框架,使用验证码 1 功能分析 l 注册 l 登录 1.1 JSP页面 l regist.jsp ? 注册表单:用户输入注册信息: ? 回显错误信息:当注册失败时,显示错误信息: l login.jsp ? 登录表单:用户输入登录信息: ? 回显错误便利店:当登录失败时,显示错误信息: l index.jsp ? 用户已登录:显示当前用户名,以及"退出"链接: ? 用户未登录:显示"您还没有登录": 1.2 实体类 User: l St

python 容器 用户注册登录系统

1. 列表和普通变量有什么区别 列表是数据类型,普通变量是用来存储数据的 可以把列表赋值给普通变量 2.存在列表 a = [11, 22, 33], 如何向列表中添加(增)新元素 44 a.append(44) 或者 a.insert(3,44) #索引号为3 3.对列表排序 a = [11,22,33,2] b = sorted(a) #创建了一个新的列表 ,a.sort()修改a列表 print(b) # [2, 11, 22, 33, 44] b = a.sort() print(b) #

谈谈移动互联网应用的用户注册登录安全考虑之不可逆加密的应用原则

现在移动互联网应用一般都会采用用户注册登录机制以便增强用户粘性.那么为了安全设计,用户的密码应该如何传输?在云端又如何保存?这个问题我思考过许久,总结以下一些思路,主要涉及到不可逆加密的使用原则. 用户的登录目的就是为了验证试图登录的用户与当初注册的用户是同一个用户. 假设用户的注册/登录过程均是在完全安全的环境下进行,例如在你自己家的个人电脑上你开发一个单机的应用,为了防止你的小孩误使用,你可很简单地设计一个用户认证系统: 设置密码将你输入的密码直接写入到你的应用的数据中,这相当是注册; 使用

Lumen实现用户注册登录认证

Lumen实现用户注册登录认证 前言 Lumen是一个基于Laravel的微框架,号称是以速度为生.截用Lumen官网的一段,号称是比silex和slim还要快. 本文将用Lumen来实现一个完整的用户注册.登录及获取用户信息的API. Lumen官方网站:https://lumen.laravel.com/Lumen中文网站:http://lumen.laravel-china.org/ 安装 composer create-project --prefer-dist laravel/lume

redis实践:用户注册登录功能

本节将使用PHP和Redis实现用户注册登录功能,下面分模块来介绍具体实现方法. 1.注册 需求描述:用户注册时需要提交邮箱.登录密码和昵称.其中邮箱是用户的唯一标识,每个用户的邮箱不能重复,但允许用户修改自己的邮箱. 我们使用散列类型来存储用户的资料,键名为user:用户ID.其中用户ID是一个自增的数字,之所以使用 ID 而不是邮箱作为用户的标识是因为考虑到在其他键中可能会通过用户的标识与用户对象相关联,如果使用邮箱作为用户的标识的话在用户修改邮箱时就不得不同时需要修改大量的键名或键值.为了

银行管理系统 实现用户注册 登录 存、取款 交易记录查询和修改用户信息等功能

========= 项    目   介   绍======== 银行账户管理系统 本项目主要实现用户注册 登录 存.取钱和修改用户信息功能. 用户信息的存储和获取通过集合和IO输入输出流实现. 存钱 取钱功能通过修改用户信息中的余额实现 修改用户信息 要先获取用户信息 ,再把修改后的信息保存到List中,同时必须删除原有的用户信息. ========项目功能需求============= 该银行管理系统可以实现 以下主要几个功能 用户注册   注册成功才能进行用户登录 用户登录  登录成功后