Django实战(22):处理登录和注销
我们已经可以在view函数中判断用户是否已经登录以及获取用户信息:
if request.user.is_authenticated(): #判断用户是否已登录
user = request.user; #获取已登录的用户
else:
user = request.user; #非登录用户将返回AnonymousUser对象
Django的User对象提供了一系列的属性和方法,其中password存储的是加密后的密码,is_staff记录用户是否有管理员权限,其 他的属性可以参考官方文档。同时django.contrib.auth模块中提供了authenticate()、login()、logout()等 函数,分别实现认证、登录、登出等功能。
Django还为我们提供了内置的处理login、logout的view函数,但是因为其提供的行为与我们这里要的不一样,所以还需要自己实现view函数。
我们使用bootstrap模板设计的布局中,在菜单栏已经放入了登录表单,如下图:

如上一节所述,我们希望只有登录后的用户才可以管理产品,所以在右上角输入用户名和密码并登录后,该处显示用户名和”注销“按钮,而页面重定向的产品管理的界面。
。而注销后再恢复成登录表单。

需求已经明确了,现在开始实现。对于url配置,由于login和logout功能应该属于整个project,而不是特定的app,所以在depot/urls.py中配置:
from depotapp.views import login_view,logout_view
urlpatterns = patterns('',
... ...
(r'^accounts/login/$', login_view),
(r'^accounts/logout/$', logout_view),
)
而我们的设计的界面中没有独立的登录、注销界面,所以view函数还是在depotapp的views.py中实现:
from django.contrib.auth import authenticate,login,logout def login_view(request):
user = authenticate(username=request.POST['username'], password=request.POST['password'])
if user is not None:
login(request, user)
print request.user
return list_product(request)
else:
#验证失败,暂时不做处理
return store_view(request) def logout_view(request):
logout(request)
return store_view(request)
所有的界面都在base.html模板中,将base.html的topbar中原来登录表单的部分,改成如下的样子:
{% if request.user.is_authenticated %}
<div class="pull-right">
<a href=#>欢迎您:{{request.user}}</a>
<a class="btn danger small" href="{% url depotapp.views.logout_view %}">注销</a>
</div>
{% else %}
<form action="{% url depotapp.views.login_view %}" method='post' class="pull-right">
{% csrf_token %}
<input name='username' class="input-small" type="text" placeholder="用户名">
<input name='password' class="input-small" type="password" placeholder="密码">
<button class="btn" type="submit">登录</button>
</form>
{% endif %}
Django实战(22):处理登录和注销的更多相关文章
- Django实战(一)-----用户登录与注册系统6(session会话、注册视图)
因为因特网HTTP协议的特性,每一次来自于用户浏览器的请求(request)都是无状态的.独立的. 通俗地说,就是无法保存用户状态,后台服务器根本就不知道当前请求和以前及以后请求是否来自同一用户.对于 ...
- Django 后台管理 之登录和注销
Session: session是服务器端生成保存的一个键值对 , session内部机制依赖于cookie . 用户登录后返回给客户端一个随机字符串,客户端带着随机字符串访问服务器,用于验证 ...
- Django实战(一)-----用户登录与注册系统3(前端页面、登录视图)
基本框架搭建好了后,我们就要开始丰富页面内容了.最起码,得有一个用户登录的表单不是么?(注册的事情我们先放一边.) 一. 原生HTML页面 删除原来的login.html文件中的内容,写入下面的代码: ...
- Django实战(一)-----用户登录与注册系统7(邮件确认)
通常而言,我们在用户注册成功,实际登陆之前,会发送一封电子邮件到对方的注册邮箱中,表示欢迎.进一步的还可能要求用户点击邮件中的链接,进行注册确认. 下面就让我们先看看如何在Django中发送邮件吧. ...
- Django实战(一)-----用户登录与注册系统5(图片验证码)
为了防止机器人频繁登录网站或者破坏分子恶意登录,很多用户登录和注册系统都提供了图形验证码功能. 验证码(CAPTCHA)是一种区分用户是计算机还是人的公共全自动程序. 可以防止恶意破解密码.刷票.论坛 ...
- Django实战(一)-----用户登录与注册系统4(表单)
我们前面都是手工在HTML文件中编写表单form元素,然后在views.py的视图函数中接收表单中的用户数据,再编写验证代码进行验证,最后使用ORM进行数据库的增删改查.这样费时费力,整个过程比较复杂 ...
- Django实战(一)-----用户登录与注册系统2(数据模型、admin后台、路由视图)
使用Django开发Web应用的过程中,很多人都是急急忙忙地写视图,写前端页面,把最根本的模型设计给忽略了. 模型中定义了数据如何在数据库内保存,再直白点说就是数据表的定义.这部分工作体现在Djang ...
- Django实战(一)-----用户登录与注册系统1(环境搭建)
一.背景 学了一段时间的语法,总感觉入不了门,所以找点小项目练练手,项目来自网络. 二.创建虚拟环境,并安装Django 使用Python中的virtualenv搭建一个mysite_env全新的环境 ...
- django用户登录和注销
django版本:1.4.21. 一.准备工作 1.新建项目和app [root@yl-web-test srv]# django-admin.py startproject lxysite [roo ...
随机推荐
- jquery 格式化数字字符串(小数位)
用于页面上格式化数字字符串,此代码为工作时所需,留作笔记,比较常用. /** * author: xg君 * 描述: 格式化数字字符串,格式化小数位 * obj为需要格式的对象(例如:input标签) ...
- 如何安装ioncube扩展对PHP代码加密
禅道专业版本的核心代码都是加密的(前端的html, css, js, 配置,语言项是开源的)的,使用的加密软件是 ioncube,因此要能运行禅道专业版本的软件,先要按照ioncube扩展. 一.下载 ...
- Web开发中的18个关键性错误
前几年,我有机会能参与一些有趣的项目,并且独立完成开发.升级.重构以及新功能的开发等工作. 本文总结了一些PHP程序员在Web开发中经常 忽略的关键错误,尤其是在处理中大型的项目上问题更为突出.典型的 ...
- 地位尴尬的WebForm、ASP.NET核心知识(10)
WebForm之烦恼 1.winform式的开发方式 WebForm的开发方式中,只需要从工具箱中拖拽一个控件,再从.aspx.cs中写控件的事件逻辑,就好了. 微软为我们做了很多工作,很多东西不需要 ...
- kafka入门(2)- 环境部署
部署Zookeeper(单机/集群) 1.下载安装文件: http://mirror.bit.edu.cn/apache/zookeeper/ 2.解压文件(本文解压到 D:\zookeeper-3. ...
- Django认证系统实现的web页面
结合数据库.ajax.js.Djangoform表单和认证系统的web页面 一:数据模块 扩展了Django中的user表,增加了自定义的字段 from django.db import models ...
- CSS line-height应用
一.固定高度的容器,单行文本垂直居中 代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf- ...
- Python使用OpenCV实现简单的人脸检测
文章目录: OpenCV安装 安装numpy 安装opencv OpenCV使用 OpenCV测试 效果图: 注意: 图片人脸检测 程序要求: 技术实现思路 注意 本文使用的环境是:Windows+P ...
- 揭秘Patchwork APT攻击-恶意软件样本BADNEWS
1.前言 在2016年左右研究人员发现一个与东南亚和中国南海问题的APT攻击,该APT攻击利用MS Offcie系列漏洞通过钓鱼邮件的形式欺骗受害者点击木马.以美国在内的各国政府和公司为目标发送了大量 ...
- vim加密文件
一.加密文件内容 vim gt-1.sh 输入:X 注意是大写的X 输入密码 然后,保存 再次访问,需要输入密码 如果输入密码错误,内容显示为乱码 用cat或more查看文件内容,显示为乱码:用vi重 ...