Django笔记-登陆、注册(利用cookie实现)
1、项目结构:

2、关键代码:
settings.py
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog',
) MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
#'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
)
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'test10',
'HOST':'localhost',
'PORT':'',
'USER':'root',
'PASSWORD':'passwd',
}
}
urls.py
url(r'^register/$', 'blog.views.register'),
url(r'^login/$','blog.views.login'),
url(r'^index/$', 'blog.views.index'),
url(r'^logout/$','blog.views.logout'),
models.py
# -*- coding: utf-8 -*-
from django.db import models class User(models.Model):
username = models.CharField(max_length=20)
password = models.CharField(max_length=30) def __unicode__(self):
return self.username
views.py
# -*- coding: utf-8 -*-
from django.shortcuts import render, render_to_response
from django.http import HttpResponse
from django import forms
from models import User
from django.http.response import HttpResponseRedirect class UserForm(forms.Form):
username = forms.CharField()
password = forms.CharField(widget=forms.PasswordInput) def register(req):
#处理post方法的数据
if req.method == "POST":
uf = UserForm(req.POST)
#如果数据有效
if uf.is_valid():
username = uf.cleaned_data['username']
password = uf.cleaned_data['password']
#username = unicode(uf.cleaned_data['username'],'UTF-8')
#password = unicode(uf.cleaned_data['password'],'UTF-8')
#print username,password
#return HttpResponse('ok')
User.objects.create(username=username,password=password)
return HttpResponseRedirect('/login/')
else:
uf = UserForm()
return render_to_response('register.html',{'uf':uf})
#处理get方法的数据
else :
uf = UserForm(req.GET)
if uf.is_valid():
username = uf.cleaned_data['username']
password = uf.cleaned_data['password']
#username = unicode(uf.cleaned_data['username'],'UTF-8')
#password = unicode(uf.cleaned_data['password'],'UTF-8')
#print username,password
#return HttpResponse('ok')
User.objects.create(username=username,password=password)
return HttpResponseRedirect('/login/')
else:
uf = UserForm()
return render_to_response('register.html',{'uf':uf}) def login(req):
if req.method == "POST":
uf = UserForm(req.POST)
if uf.is_valid():
username = uf.cleaned_data['username']
password = uf.cleaned_data['password']
#获取名字和密码
users = User.objects.filter(username__exact=username,password__exact=password)
if users:
#获取到response
response = HttpResponseRedirect('/index/')
#保存到cookie
response.set_cookie('username', username, 3600)
return response else:
return HttpResponseRedirect('/login/')
#return HttpResponseRedirect('/login/')
else:
uf = UserForm()
return render_to_response('login.html',{'uf':uf})
else :
uf = UserForm(req.GET)
if uf.is_valid():
username = uf.cleaned_data['username']
password = uf.cleaned_data['password']
users = User.objects.filter(username__exact=username,password__exact=password)
if users:
#return HttpResponseRedirect('/index/')
response = HttpResponseRedirect('/index/')
#response.set_signed_cookie('username', username, 3600)
response.set_cookie('username',username,3600)
else:
return HttpResponseRedirect('/login/')
#return HttpResponseRedirect('/login/')
else:
uf = UserForm()
return render_to_response('login.html',{'uf':uf}) def index(req):
#return HttpResponse('ok')
username = req.COOKIES.get('username','')
#return HttpResponse('welcome %s'% username)
return render_to_response('index.html',{'username':username}) def logout(req):
# 删除cookie
response = HttpResponse('logout')
response.delete_cookie('username')
return response
register.html
<body>
<form method="post">
{{uf.as_p}}
<input type="submit" value="OK"/>
</form>
</body>
login.html
<body>
<form method="post">
{{uf.as_p}}
<input type="submit" value="OK"/>
</form>
</body>
index.html
<body>
<div>
<h1>welcome , {{username}}</h1>
<a href='/logout/'>logou</a>
</div>
</body>
3、效果截图:
注册:

登陆:

登陆成功:

注销:

再次输入index主体页面,已经删除了cookie,效果如下:

在数据库中插入的数据(推荐使用SQLyog,这个真心不错):

Django笔记-登陆、注册(利用cookie实现)的更多相关文章
- Django笔记-登陆注册-1
1.项目结构(eclipse+PyDev工具)(粘上来后代码缩进格式没有了,就先不整了) 2.关键代码: test_log03.settings.py INSTALLED_APPS = ( 'djan ...
- 2.django笔记之缓存,session,cookie,ajax
一.django缓存 1.缓存 缓存的意义在于把昂贵的计算结果保存起来一遍下次的访问,有缓存的站点的流程大概是这样子的: 给定一个url,检查页面是否在缓存中 如果在,返回缓存的页面 否则,生成该页面 ...
- django 用户登陆注册
注册登陆 views.py #!/usr/bin/env python # -*- coding:utf- -*- from django.shortcuts import render,render ...
- Django学习笔记(5)——cookie和session
一,前言 1.1,什么是会话跟踪技术 在JavaWeb中,客户向某一服务器发出第一个请求开始,会话就开始了,直到客户关闭了浏览器会话结束.在一个会话的多个请求中共享数据,这就是会话跟踪技术. 例如在一 ...
- RFS实例登录126邮箱/利用cookie登陆百度
可以直接添加用户关键字,也可以新建资源,将用户关键字添加入资源,然后导入整个资源文件 用户关键字内部实现如下: 打开126邮箱首页: Open Browser Http://mail.126.com ...
- 使用ApiPost测试接口时需要先登录怎么办?利用Cookie模拟登陆!
ApiPost简介: ApiPost是一个支持团队协作,并可直接生成文档的API调试.管理工具.它支持模拟POST.GET.PUT等常见请求,是后台接口开发者或前端.接口测试人员不可多得的工具 . 下 ...
- Python自动化运维 - Django(三)CSRF - Cookie&Session
CSRF跨站请求伪造 CSRF跨站点请求伪造(Cross—Site Request Forgery),跟XSS攻击一样,存在巨大的危害性,你可以这样来理解:攻击者盗用了你的身份,以你的名义发送恶意请求 ...
- Django详解之四、cookie和session
一.使用背景 思路 简单的后台管理:对人员的管理 1. 登录注册 2. 老师 班级管理 学院管理 3. 增删改查 开发: 1. 定义数据库表结构 a) 表结构关系 i. class classes(m ...
- Servlet 利用Cookie实现一周内不重复登录
import java.io.IOException;import java.io.PrintWriter; import javax.servlet.ServletException;import ...
随机推荐
- ActiveMQ_Linux安装(一)
一.下载:apache-activemq-5.14.0-bin.tar.gz http://activemq.apache.org/activemq-5140-release.html 二.安 ...
- 【CodeVS 3289】【NOIP 2013】花匠
http://codevs.cn/problem/3289/ dp转移,树状数组维护前缀max和后缀max进行优化,$O(nlogn)$. #include<cstdio> #includ ...
- 【BZOJ 3531】【SDOI 2014】旅行
因为有$10^5$个宗教,需要开$10^5$个线段树. 平时开的线段树是“满”二叉树,但在这个题中代表一个宗教的线段树管辖的区间有很多点都不属于这个宗教,也就不用“把枝叶伸到这个点上”,所以这样用类似 ...
- HTML常用标签与表格标签
超链接标签: <a href="超链接地址" target="_blank">超链接的文字</a> _blank或new是在新网页中打开 ...
- HDFS文件和HIVE表的一些操作
1. hadoop fs -ls 可以查看HDFS文件 后面不加目录参数的话,默认当前用户的目录./user/当前用户 $ hadoop fs -ls 16/05/19 10:40:10 WARN ...
- Redis_持久化之RDB
rdb - Redis DataBase 官网介绍: 在指定的时间间隔内存中的数据集快照写入磁盘,也就是行话将的Snapshot快照,它恢复时是将快照文件直接读到内存中. 是什么: Redis会单独创 ...
- bzoj 3196 树套树模板
然而我还是在继续刷水题... 终于解开了区间第k大的心结... 比较裸的线段树套平衡树,比较不好想的是求区间第k大时需要二分一下答案,然后问题就转化为了第一个操作.复杂度nlog3n.跑的比较慢... ...
- Gulp解决发布线上文件(CSS和JS)缓存问题
Gulp解决发布线上文件(CSS和JS)缓存问题 本文的缘由:目前经常线上发布文件后要不断的刷新页面及过很长时间,页面上的CSS和JS文件才能生效,特别对于目前做微信商城的时候,微信内置的浏览器缓存非 ...
- Android数据存储-通过SharedPreferences实现记住密码的操作
在Android中登陆中,为了实现用户的方便,往往需要根据用户的需要进行记住密码的操作,所以,在Android数据存储中SharedPreferences恰恰可以实现这一点 下面,小编将带领大家通过S ...
- nagios note
server: nagios nagios_plugin nrpe ip:192.168.1.2 client nagios_plugin xinetd nrpe ip:192.168.1.3 一篇介 ...