视图

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. 关于inittab的几个命令

    1. 查看default runlevel(默认运行等级)的方法: $cat /etc/inittab | grep id id:3:initdefault: # <id>:<run ...

  2. 配置Nginx防止直接用IP訪问Webserver

    看了非常多Nginx的配置,好像都忽略了ip直接訪问Web的问题.这样理论上不利于SEO优化,所以我们希望能够避免直接用IP訪问站点.而是域名訪问.详细怎么做呢.看以下. 官方文档中提供的方法: If ...

  3. left join,right join用法简介

    方法一(推荐): select a.man_id,man_name,d.sex_name,zw_name,c.money from man as a left join zw as b on a.zw ...

  4. Elasticsearch5.3 学习(一):安装、Yii2.0 下载es扩展

    Elasticsearch是一个基于Lucene,提供了一个分布式多用户能力的全文搜索引擎.其他就不多说了,官方文档有详细的介绍. 我自己是在CentOS 7.0安装的 Elasticsearch 是 ...

  5. oracle10g卸载问题

    oracle10g卸载是一个比较麻烦的事,一般要完全卸载有以下几个步骤: 实现方法:1.开始->设置->控制面板->管理工具->服务停止所有Oracle服务:2.开始-> ...

  6. Python的paramiko模块ssh操作

    SSHClient 用于连接远程服务器并执行基本命令 基于用户名密码连接: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 import paramiko    # 创建 ...

  7. python入门课程 第3章 Python变量和数据类型

    第3章 Python变量和数据类型3-1 Python中数据类型计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形 ...

  8. python pymysql安装

    ==================pymysql=================== 由于 MySQLdb 模块还不支持 Python3.x,所以 Python3.x 如果想连接MySQL需要安装 ...

  9. GS与MS之间通信

    GS与MS之间通信 注意GS与MS是两个线程,现在是每个map一个线程,他们之间是内部协议进行通信的,那既然是两个线程那如何通信呢,看了net进程通信这个就比较简单了 举个例子 m_pMap-> ...

  10. android菜鸟学习笔记21----ContentProvider(一)ContentProvider的简单使用

    ContentProvider是Android四大组件之一,它用来封装数据,并通过ContentResolver接口将数据提供给其他应用.只有当需要在多个应用之间共享数据时才会用到ContentPro ...