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 ...
随机推荐
- 0 - Visualizing and Understanding Convolutional Networks(阅读翻译)
卷积神经网络的可视化理解(Visualizing and Understanding Convolutional Networks) 摘要(Abstract) 近来,大型的卷积神经网络模型在Image ...
- Mysql索引查询失效的情况
首先,复习一下索引的创建: 普通的索引的创建: CREATE INDEX (自定义)索引名 ON 数据表(字段); 复合索引的创建: CREATE INDEX (自定义)索引名 ON 数据 ...
- LeetCode109----链表转为二叉搜索树
给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树. 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1. 示例:给定的有序链表: [-10, ...
- selenium 右侧滚动条操作
对于web上有右侧滚动条的操作 可用使用JS语句执行 拖到底部 js = "var q=document.documentElement.scrollTop=10000"brows ...
- HearthBuddy BotManager
MainWindow private void button_0_Click(object sender, RoutedEventArgs e) { Configuration.Instance.Sa ...
- 指定pip清华源
临时指定: pip install cefpython3 -i https://pypi.tuna.tsinghua.edu.cn/simple 一直使用:pip的配置文件为%HOME%/pip/pi ...
- SRCNN代码分析
代码是作者页面上下载的matlab版.香港中文大学汤晓鸥教授.Learning a Deep Convolutional Network for Image Super-Resolution. htt ...
- LC 638. Shopping Offers
In LeetCode Store, there are some kinds of items to sell. Each item has a price. However, there are ...
- Python Flask,cookie,session ,设置、获取、删除
使用Response类的set_cookie()方法可以设置cookie: Response.set_cookie( key, //键 value='', //值 max_age=None, //秒为 ...
- Data - 大数据分析学习之路
一.大数据分析的五个基本方面 可视化分析 大数据分析的使用者有大数据分析专家,同时还有普通用户,但是他们二者对于大数据分析最基本的要求就是可视化分析,因为可视化分析能够直观的呈现大数据特点,同时能够非 ...