Django:登录、注册、退出
创建项目:
一、创建项目
django-admin startproject form_test
二、创建应用
1、cd form_test
2、sudo ./manage.py startapp form_app
三、配置应用
1、vim setting.py
2、在INSTALLED_APPS添加刚创建的应用(’form_app’)
四、创建url(form_test/urls.py)
#form_test/urls.py
from django.conf.urls import patterns, include, url
from django.contrib import admin
urlpatterns = patterns('',
# Examples:
# url(r'^$', 'form_test.views.home', name='home'),
# url(r'^blog/', include('blog.urls')),
url(r'^admin/', include(admin.site.urls)),
url(r'^$', 'form_app.views.login',name='login'),
url(r'^login/$', 'form_app.views.login',name='login'),
url(r'^regist/$', 'form_app.views.regist',name='regist'),
url(r'^index/$', 'form_app.views.index',name='index'),
url(r'^logout/$', 'form_app.views.logout',name='logout'),
url(r'^share/$', 'form_app.views.share',name='share'),
)
五、创建数据库对象(form_app/models.py)
from django.db import models
# Create your models here.
class User(models.Model):
username = models.CharField(max_length=50)
password = models.CharField(max_length=50)
def __unicode__(self):
return self.username
六、编写视图(/form_app/views.py)
#coding:utf-8
from django.shortcuts import render,render_to_response
from django import forms
from django.http import HttpResponse,HttpResponseRedirect
from django.template import RequestContext
from models import User
# Create your views here.
#表单
class UserForm(forms.Form):
username = forms.CharField(label='用户名',max_length=100)
password = forms.CharField(label='密__码',widget=forms.PasswordInput())
def regist(req):
if req.method == 'POST':
uf = UserForm(req.POST)
if uf.is_valid():
#获取表单数据
username = uf.cleaned_data['username']
password = uf.cleaned_data['password']
#添加到数据库
#User.objects.get_or_create(username = username,password = password)
registAdd = User.objects.get_or_create(username = username,password = password)[1]
if registAdd == False:
#return HttpResponseRedirect('/share/')
return render_to_response('share.html',{'registAdd':registAdd,'username':username})
else:
return render_to_response('share.html',{'registAdd':registAdd})
else:
uf = UserForm()
return render_to_response('regist.html',{'uf':uf},context_instance=RequestContext(req))
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']
#对比提交的数据与数据库中的数据
user = User.objects.filter(username__exact = username,password__exact = password)
if user:
#比较成功,跳转index
response = HttpResponseRedirect('/index/')
#将username写入浏览器cookie,失效时间为3600
response.set_cookie('username',username,3600)
return response
else:
return HttpResponseRedirect('/login/')
else:
uf = UserForm()
return render_to_response('login.html',{'uf':uf},context_instance=RequestContext(req))
#登录成功
def index(req):
username = req.COOKIES.get('username','')
return render_to_response('index.html',{'username':username})
#退出登录
def logout(req):
response = HttpResponse('logout!!!')
#清除cookie里保存的username
response.delete_cookie('username')
return response
def share(req):
if req.method == 'POST':
uf = UserForm(req.POST)
if uf.is_valid():
username = uf.cleaned_data['username']
password = uf.cleaned_data['password']
return render_to_response('share.html',{'username':username})
else:
uf = UserForm()
return render_to_response('share.html',{'uf':uf})
七、创建templates(form_app/templates)
1、cd templates
2、sudo touch share.html、regist.html、login.html、logout.html、index.html
3、share.html
{{registAdd}}
<br>
==================
<br>
{% if username %}
注册失败{{username}}已存在
<a href="http://127.0.0.1:8000/regist">注册</a>
{% else %}
注册成功!
<a href="http://127.0.0.1:8000/login">登录</a>
{% endif %}
4、regist.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Regist</title>
</head>
<body>
<h1>注册页面</h1>
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
{{uf.as_p}}
<input type="submit" value="ok"></input>
</form>
<a href="http://127.0.0.1:8000/login">登录</a>
</body>
</html>
5、login.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Login</title>
</head>
<body>
<h1>登录页面</h1>
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
{{uf.as_p}}
<input type="submit" value="ok"></input>
</form>
<a href="http://127.0.0.1:8000/regist">注册</a>
</body>
</html>
6、index.html
<!DOCTYPE html>
<html>
<head>
<title>index</title>
</head>
<body>
<h1>Welcome {{ username }}!</h1>
<br>
<a href="http://127.0.0.1:8000/logout">退出</a>
</body>
</html>
Django:登录、注册、退出的更多相关文章
- django 登录注册注销
一.设计数据模型 1.数据库模型设计 作为一个用户登录和注册项目,需要保存的都是各种用户的相关信息.很显然,我们至少需要一张用户表User,在用户表里需要保存下面的信息: 用户名 密码 邮箱地址 性别 ...
- django登录注册验证之密码包含特殊字符,确认密码一致实现,Form验证
Form验证的原理 首先用户在注册界面提交表单,后台收到表单之后通过request.post取到数据然后传入已经写好的Form类 执行obj.is_valid()这里的obj为Form的实例,在For ...
- [oldboy-django][2深入django]登录注册页面验证码
后台生成随机验证码 #验证码生成 - 在login.html 中有一张验证码图片 设置图片的src url, 相当于发送一次get请求,返回的内容为图片渲染的内容 <div class=&quo ...
- django 登录、注册
一.登录 1.在blogapp同级目录下新建一个userapp python manage.py startapp users 目录结构如下: 2.在主项目urls.py中新建users的includ ...
- PHP注册与登录【3】 用户登录与退出
登录页面 login.html 负责收集用户填写的登录信息. <fieldset> <legend>用户登录</legend> <form name=&quo ...
- Django的内置登录、退出、修改密码方法
Django中内置的登录.退出.修改密码方法. 1.url.py中使用django.contrib.auth中的views函数,django.views.generic中的TemplateView函数 ...
- django的权限认证:登录和退出。auth模块和@login_required装饰器
在settings.py中配置LOGIN_URL参数: # 用户访问带有(@login_required)标签的页面(view)时,如果没有登录,就会跳转到LOGIN_URL(即登陆url). LOG ...
- Django+pycharm+mysql 实现用户登录/注册(Django五)
首先是让Django项目与mysql数据库初步建立连接 具体做法见:pycharm连接mysql(注意其中第二步MySQL驱动最好安装最新版的) 这里讲一下我在做这一步遇到的问题.一般Driver 那 ...
- Django项目登录注册系统
Django项目之个人网站 关注公众号"轻松学编程"了解更多. Github地址:https://github.com/liangdongchang/MyWeb.git 感兴趣的可 ...
- Django实现用户登录注册
本文将会介绍小白如何完成一个用户登录注册系统 新建一个Django项目,名字为login_register,并且使用命令manage.py startapp.User(名字自己随便起) 最终djang ...
随机推荐
- hibernate持久化类中,修改字符串长度时,注意的问题
在使用hibernate注解修饰字符串长度时,如果一开始没有把String类型的变量长度设计好,在网数据库插入数据时,容易造成字段长度超出错误,这时候需要修改@Column里length的大小.如果使 ...
- 使用 PM2 将 Node.js 的集群变得更加容易
介绍 众所周知,Node.js运行在Chrome的JavaScript运行时平台上,我们把该平台优雅地称之为V8引擎.不论是V8引擎,还是之后的Node.js,都是以单线程的方式运行的,因此,在多核心 ...
- RDS数据库全量恢复方案
一.全量恢复 恢复最近的快照,将快找之前的数据全量恢复 二.增量恢复 下载对应的binlog日志导入到数据库 三.还没有备份的binlog日志获取方法 首先连接 RDS for MySQL 后查看当前 ...
- LC 900. RLE Iterator
Write an iterator that iterates through a run-length encoded sequence. The iterator is initialized b ...
- [z]curl使用指南
https://www.jianshu.com/p/fc0eb6c60816 curl -X POST "http://aa/bb/cc" -H "accept:*/* ...
- html分割线
分割线效果图 完整html代码如下 <!DOCTYPE html> <html> <head> <meta charset= "utf-8" ...
- 用Red5搭建支持WEB播放的实时监控视频
用Red5搭建支持WEB播放的实时监控视频 1. 下载Red5:https://github.com/Red5/red5-server/releases 下载了Red5 1.0.6 release的Z ...
- 虚拟机、云主机、VPS 三者之间的区别
当我们想部署网站的时候,经常会听到vps.云主机.虚拟机等关键字,那么你知道这几者之间的区别吗?本文就讲解一下VPS.云主机.虚拟机之间的区别. 什么是VPS VPS 是Virtual Private ...
- java多媒体文件编码、处理工具类
<dependency> <groupId>org.apache.storm</groupId> <artifactId>storm-core</ ...
- Docker在PHP项目开发环境中的应用
http://avnpc.com/pages/build-php-develop-env-by-docker