创建项目:

一、创建项目

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>

最新文章

  1. dataTables添加序号和行选中框
  2. [Asp.net 5] Options-配置文件之后的配置
  3. 理解autorelease
  4. Spring MVC简介
  5. 类似input框内最右边添加图标,有清空功能
  6. Windows的同步I/O和异步I/O
  7. JAVAMAIL手动发送邮件
  8. ligerUI路径问题
  9. C语言版推箱子
  10. mahout算法源码分析之Collaborative Filtering with ALS-WR 并行思路
  11. 认识mongoDB数据库
  12. JavaScript基础精讲
  13. KendoUi 学习笔记一
  14. OKHttpUtil工具类
  15. 【问题解决:连接异常】 java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Long
  16. JS--理解参数,argument,重载
  17. C# 判断两张图片是否一致,极快速
  18. django-后台sms管理系统的css框架
  19. 命名实体识别(NER)
  20. CCF CSP 201409-4 最优配餐

热门文章

  1. CodeForces 535C Tavas and Karafs —— 二分
  2. golang 文件导入数据追加sheet
  3. LeetCode 328. 奇偶链表(Odd Even Linked List)
  4. yield and send的使用详细解释
  5. qt 之http学习
  6. React Native 日常报错
  7. 来自iSpy整理的最全海康大华IPC的RTSP连接地址
  8. java和delphi共用的des加密解密
  9. Spring-Kafka —— 实现批量消费和手动提交offset
  10. rsync同步脚本