视图

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>

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

  1. Django实现用户注册登录

    学习Django中:试着着写一个用户注册登录系统,开始搞事情 =====O(∩_∩)O哈哈~===== ================= Ubuntu python 2.7.12 Django 1. ...

  2. Django+bootstrap+注册登录系统

    转自:https://www.cnblogs.com/robindong/p/9610057.html Robin_D 博客园 首页 新随笔 联系 订阅 管理 随笔 - 10  文章 - 0  评论 ...

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

    用户注册登录 要求:3层框架,使用验证码 1        功能分析 l  注册 l  登录 1.1 JSP页面 l  regist.jsp 注册表单:用户输入注册信息: 回显错误信息:当注册失败时, ...

  4. 【ASP.NET】UCenter实现多站点同步登录退出

    利用UCenter实现discuz论坛和应用网站同步登录和退出功能 测试环境:Discuz! X3.2.UCenter 1.6..Net Framework 4.0 进入Discuz 后台的UCent ...

  5. 超全面的JavaWeb笔记day14<用户注册登录>

    案例:用户注册登录 要求:3层框架,使用验证码 1 功能分析 l 注册 l 登录 1.1 JSP页面 l regist.jsp Ø 注册表单:用户输入注册信息: Ø 回显错误信息:当注册失败时,显示错 ...

  6. python 容器 用户注册登录系统

    1. 列表和普通变量有什么区别 列表是数据类型,普通变量是用来存储数据的 可以把列表赋值给普通变量 2.存在列表 a = [11, 22, 33], 如何向列表中添加(增)新元素 44 a.appen ...

  7. Django之auth登录认证

    前言:我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能,这还真是个麻烦的事情呢. Django作为一个完美主义者的 ...

  8. django自定义实现登录验证-更新版

    django自定义实现登录验证 django内置的登录验证必须让开发者使用django内置的User模块,这会让开发者再某些方面被限制住 下面的模块是我自己自定义实现的django验证,使用方式和dj ...

  9. 传智播客JavaWeb day07、day08-自定义标签(传统标签和简单标签)、mvc设计模式、用户注册登录注销

    第七天的课程主要是讲了自定义标签.简单介绍了mvc设计模式.然后做了案例 1. 自定义标签 1.1 为什么要有自定义标签 前面所说的EL.JSTL等技术都是为了提高jsp的可读性.可维护性.方便性而取 ...

  10. ac命令根据/var/log/wtmp文件登录退出时间计算用户连接时间

    ac命令根据/var/log/wtmp文件登录退出时间计算用户连接时间

随机推荐

  1. dwr文件上传

    配置FileService映射: dwr.xml <create creator="new"> <param name="class" val ...

  2. 基于markdown的blog系统调研1:typecho

    ))

  3. liunx 下安装 php_screw 扩展 以及报错处理

    php_screw 是一个 php 源代码加密扩展.首先来看一下 php_screw 在liunx下是如何安装的 首先 去源完整下载 安装包,现在的最新版是 1.5,我们就用1.5 来做个实例 如果有 ...

  4. PHP-Manual的学习----【语言参考】----【类型】-----【float浮点型】

    笔记:1.浮点型(也叫浮点数 float,双精度数 double 或实数 real)可以用以下任一语法定义: <?php$a = 1.234; $b = 1.2e3; $c = 7E-10;?& ...

  5. Python的自省机制

    什么是自省? 在日常生活中,自省(introspection)是一种自我检查行为. 在计算机编程中,自省是指这种能力:检查某些事物以确定它是什么.它知道什么以及它能做什么.自省向程序员提供了极大的灵活 ...

  6. cookie的坑

      HTTP Cookie       设置了secure ,   该cookie只能在HTTPS通道下被写入浏览器. HTTPS Cookie     设置了secure ,   该cookie只能 ...

  7. shell 日期加减运算

    比如今日是2012-04-22 $ date -d "+1 day" +%Y-%m-%d 2012-04-23   $ date -d "-1 day" +%Y ...

  8. pinpoint本地开发——collector

    本地启动collector 启动前准备 启动之前,要先确保本地已经可以正常package,install 必须保证install成功,才能进行后续步骤,无法install或者package参考[pin ...

  9. 图片加载ImageLoader

    https://github.com/nostra13/Android-Universal-Image-Loader public class AtguiguApplication extends A ...

  10. 2018年长沙理工大学第十三届程序设计竞赛 E 小木乃伊到我家 【最短路】

    时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64bit IO Format: %lld 题目描述 AA的欧尼酱qwb是个考古学家,有一天qwb发 ...