Django初步完成:登录、注册、退出

python环境:python2.7

开发工具:pycharm

项目名称:mysite5

app名称:online

settings:映射app路径

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'online',
]
View Code

 

数据库:model:

 1 # -*- coding: utf-8 -*-
 2 from __future__ import unicode_literals
 3 from django.db import models
 4 
 5 # Create your models here.python manage.py syncdb
 6 
 7 
 8 
 9 class User(models.Model):
10     username = models.CharField(max_length=50,unique=True)
11     password = models.CharField(max_length=50)
12     unique = True
13     def __unicode__(self):
14         return self.username
View Code

命令生成数据库:

python manage.py makemigrations #生成配置文件

python manage.py migrate #生成表

python manage.py createsuperuser  #生成超级用户

项目下url.py匹配:#也称一级路由

1 from django.conf.urls import url,include
2 from django.contrib import admin
3 from online import models,views
4 urlpatterns = [
5     url(r'^admin/', admin.site.urls),
6     url(r'^online/', include('online.urls')),
7 
8 ]
View Code

app下url.py:#也称二级路由

 1 from django.conf.urls import url,include
 2 from django.contrib import admin
 3 from online import models,views
 4 urlpatterns = [
 5     url(r'^admin/', admin.site.urls),
 6     url(r'^$', views.login, name='login'),
 7     url(r'^login/$', views.login, name='login'),
 8     url(r'^regist/$', views.regist, name='regist'),
 9     url(r'^index/$', views.index, name='index'),
10     url(r'^logout/$', views.logout, name='logout'),
11 ]
View Code

view.py逻辑函数:#称为视图层

 1 # -*- coding: utf-8 -*-
 2 from __future__ import unicode_literals
 3 
 4 from django.shortcuts import render
 5 
 6 # Create your views here.
 7 from django.shortcuts import render,render_to_response
 8 from django.http import HttpResponse,HttpResponseRedirect
 9 from django.template import RequestContext
10 from django import forms
11 from models import User
12 
13 #表单
14 class UserForm(forms.Form):
15     username = forms.CharField(label='用户名',max_length=100)
16     password = forms.CharField(label='密码',widget=forms.PasswordInput())
17 
18 
19 #注册
20 def regist(req):
21     if req.method == 'POST':
22         uf = UserForm(req.POST)
23         if uf.is_valid():
24             #获得表单数据
25             username = uf.cleaned_data['username']
26             password = uf.cleaned_data['password']
27             #添加到数据库
28             filterResult=User.objects.filter(username=username)
29             if len(filterResult)>0:
30                 context={'error':'用户名已存在,请从新输入!'}
31                 return  render(req,'regist.html',context)
32             else:
33                 User.objects.create(username= username,password=password)
34                 return render(req,'regust_success.html')
35     else:
36         uf = UserForm()
37     return render(req,'regist.html',{'uf':uf})
38 
39 #登陆
40 def login(req):
41     if req.method == 'POST':
42         uf = UserForm(req.POST)
43         if uf.is_valid():
44             #获取表单用户密码
45             username = uf.cleaned_data['username']
46             password = uf.cleaned_data['password']
47             #获取的表单数据与数据库进行比较
48             user = User.objects.filter(username__exact = username,password__exact = password)
49             if user:
50                 #比较成功,跳转index
51                 response = HttpResponseRedirect('/online/index/')
52                 #将username写入浏览器cookie,失效时间为3600
53                 response.set_cookie('username',username,3600)
54                 return response
55             else:
56                 #比较失败,还在login
57                 return HttpResponseRedirect('/online/login/')
58     else:
59         uf = UserForm()
60     return render(req,'login.html',{'uf':uf})
61 
62 #登陆成功
63 def index(req):
64     username = req.COOKIES.get('username','')
65     return render(req,'index.html' ,{'username':username})
66 
67 #退出
68 def logout(req):
69     response = HttpResponse('logout !!')
70     #清理cookie里保存username
71     response.delete_cookie('username')
72     return render(req,'login.html')
View Code

项目下->templates  #模板 存放HTML文件得

登录页面:index.html

 1 "1.0" encoding="UTF-8"?>
 2 "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 3 "http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 4 
 5     "Content-Type" content="text/html; charset=UTF-8" />
 6     登陆
 7 
 8 
 9 
10 

登陆页面:

11
'post' enctype="multipart/form-data"> 12 {% csrf_token %} 13

"text" name="username" />

14

"password" name="password"/>

15 {# {{uf.as_p}}#} 16 "submit" value = "ok" /> 17
18
19 "http://127.0.0.1:8000/online/regist/">注册 20 21
View Code

注册页面:regist.html

 1 "1.0" encoding="UTF-8"?>
 2 "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 3 "http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 4 
 5     "Content-Type" content="text/html; charset=UTF-8" />
 6     注册
 7 
 8 
 9 
10 

注册页面:

11
'post' enctype="multipart/form-data"> 12 {% csrf_token %} 13 {{ error }} 14

"text" name="username" />

15

"password" name="password"/>

16 "submit" value = "ok" /> 17
18
19 "http://127.0.0.1:8000/online/login/">登陆 20 21
View Code

注册成功页面:login.html

 1 
 2 "en">
 3 
 4     "UTF-8">
 5     Title
 6 
 7 
 8 

注册成功!

9 "http://127.0.0.1:8000/online/login/">登陆 10 11
View Code

 

登录成功页面:index.html

 1 "1.0" encoding="UTF-8"?>
 2 "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 3 "http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 4 
 5     "Content-Type" content="text/html; charset=UTF-8" />
 6     
 7 
 8 
 9 
10 

welcome {{username}} !

11
12 "http://127.0.0.1:8000/online/logout/">退出 13 14
View Code

 

最后把服务器端口改成自己电脑得IP地址:

我是在pycharm里面改的

最后让所有人都可以访问:

在settings.py最下面添加

ALLOWED_HOSTS = ['*']

 

 

 

 

 

 

转载于:https://www.cnblogs.com/fuyuteng/p/8622580.html

你可能感兴趣的:(Django初步完成:登录、注册、退出)