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实现)的更多相关文章

  1. Django笔记-登陆注册-1

    1.项目结构(eclipse+PyDev工具)(粘上来后代码缩进格式没有了,就先不整了) 2.关键代码: test_log03.settings.py INSTALLED_APPS = ( 'djan ...

  2. 2.django笔记之缓存,session,cookie,ajax

    一.django缓存 1.缓存 缓存的意义在于把昂贵的计算结果保存起来一遍下次的访问,有缓存的站点的流程大概是这样子的: 给定一个url,检查页面是否在缓存中 如果在,返回缓存的页面 否则,生成该页面 ...

  3. django 用户登陆注册

    注册登陆 views.py #!/usr/bin/env python # -*- coding:utf- -*- from django.shortcuts import render,render ...

  4. Django学习笔记(5)——cookie和session

    一,前言 1.1,什么是会话跟踪技术 在JavaWeb中,客户向某一服务器发出第一个请求开始,会话就开始了,直到客户关闭了浏览器会话结束.在一个会话的多个请求中共享数据,这就是会话跟踪技术. 例如在一 ...

  5. RFS实例登录126邮箱/利用cookie登陆百度

    可以直接添加用户关键字,也可以新建资源,将用户关键字添加入资源,然后导入整个资源文件 用户关键字内部实现如下: 打开126邮箱首页: Open Browser  Http://mail.126.com ...

  6. 使用ApiPost测试接口时需要先登录怎么办?利用Cookie模拟登陆!

    ApiPost简介: ApiPost是一个支持团队协作,并可直接生成文档的API调试.管理工具.它支持模拟POST.GET.PUT等常见请求,是后台接口开发者或前端.接口测试人员不可多得的工具 . 下 ...

  7. Python自动化运维 - Django(三)CSRF - Cookie&Session

    CSRF跨站请求伪造 CSRF跨站点请求伪造(Cross—Site Request Forgery),跟XSS攻击一样,存在巨大的危害性,你可以这样来理解:攻击者盗用了你的身份,以你的名义发送恶意请求 ...

  8. Django详解之四、cookie和session

    一.使用背景 思路 简单的后台管理:对人员的管理 1. 登录注册 2. 老师 班级管理 学院管理 3. 增删改查 开发: 1. 定义数据库表结构 a) 表结构关系 i. class classes(m ...

  9. Servlet 利用Cookie实现一周内不重复登录

    import java.io.IOException;import java.io.PrintWriter; import javax.servlet.ServletException;import ...

随机推荐

  1. js类型转换的坑

    JS的灵活 说好听是说JS灵活, 说不好听就是JS的坑太多, JS类型转换就是一个大坑, JS的类型包括了原始类型的[null, undefined, String ,Number, Boolean] ...

  2. OkHttp:Java 平台上的新一代 HTTP 客户端

    OkHttp 简介 OkHttp 库的设计和实现的首要目标是高效.这也是选择 OkHttp 的重要理由之一.OkHttp 提供了对最新的 HTTP 协议版本 HTTP/2 和 SPDY 的支持,这使得 ...

  3. sql-truncate,delete,drop删除表数据的区别

    TRUNCATE TABLE 删除表中的所有行,而不记录单个行删除操作. 语法 TRUNCATE TABLE name 参数 name 是要截断的表的名称或要删除其全部行的表的名称. 注释 TRUNC ...

  4. RFID标签

    定义: RFID无线射频识别是一种非接触式的自动识别技术,它通过射频信号自动识别目标对象并获取相关数据,识别工作无须人工干预,可工作于各种恶劣环境.RFID技术可识别高速运动物体并可同时识别多个电子标 ...

  5. SQL server 中的@,@@、#,##分别代表什么?

    @声明变量,@@系统函数,#本地临时表,##全局临时 表    

  6. yii自动登录

    在yii,登录页面选择记住密码,下次就会自动登陆 前些天,自己增加了一个web应用,但是发现虽然选择记住密码,没选退出,关闭浏览器,重新进入还会跳转到登陆页面 自动登录是利用cookie实现的 配置U ...

  7. Tomcat安装

    第一步,下载: 直接上下载地址:http://tomcat.apache.org/download-70.cgi 直接下载如下选中即可: 第二步,安装: 然后解压(这里我是放在下载里),再进入bin目 ...

  8. css-css权威指南学习笔记1

    第一章 CSS和文档 1.结构化HTML:(个人理解) 1.内容.样式.行为分离 2.标签语义化,什么样的标签做什么样的事 3.符合web标准 4.结构清晰,header.content.footer ...

  9. 【caffe】未定义函数或变量caffe_

    @tag: caffe windows10上配置好caffe后(配置了matlab接口),运行caffe-master/matlab/demo/classification_demo.m报错,提示: ...

  10. Linux Network Related Drive

    catalog . 通过套接字通信 . 网络实现的分层模型 . 网络命名空间 . 套接字缓冲区 . 网络访问层 . 网络层 . 传输层 . 应用层 . 内核内部的网络通信 1. 通过套接字通信 Lin ...