如图1所示,设计模式MVT
- MVT 全拼为模型-视图-模板
- MVT核心 思想: 解耦
- MVT 解析
-
- M(模型)全拼为Model ,与MVC中的M功能相同,负责数据处理,内嵌了ORM框架。
- V(视图)全拼为View ,与MVC中的C功能相同,接收HttpRequest,业务处理,返回HttpResponse。
- T(模板)全拼为Template ,与MVC中的V功能相同,负责封装构造要返回的html,内嵌了模板引擎。
2,搭建虚拟环境
- 安装虚拟环境的命令
sudo pip安装virtualenv
sudo pip安装virtualenvwrapper
- python3中创建虚拟环境
mkvirtualenv -p python3 py3_django
- py3_django为虚拟环境名字
- 查看与使用
workon两次tab键#查看
workon py3_django#使用
- 删除虚拟环境
rmvirtualenv虚拟环境名称
删除虚拟环境py3_django
先退出:关闭
再删除:rmvirtualenv py3_django
- 安装的Django的
PIP安装包名称
(安装django1.8.2的包
pip安装django == 1.8.2
Pip freeze - 查看安装的包
3,创建项目
Cd / home / python / Desktop /
指定路径创建
Django-admin startproject
BookManager ---项目名字
4,创建应用
Cd BookManager /
Python manage.py startapp
图书---应用名称
在INSTALLED_APPS加入书
用pychram打开需要添加对应环境
通过终端命令哪个python查看python路径
5,测试运行
python manage.py runserver
6,创建模型类---在models.py中
从django.db 导入 模型
#在这里创建你的模型。
#准备书籍列表信息的模型类
BookInfo 类(models.Model):
#创建字段,字段类型..
name = models.CharField(max_length = 10 )
def __str__ (self ):
返回 self .name
#准备人物列表信息的模型类
class PeopleInfo(models.Model):
name = models.CharField(max_length = 10 )
gender = models.BooleanField()
#外键约束:人物属于哪本书
book = models.ForeignKey(BookInfo)
def __str__ (self ):
返回 self .name
7,模型迁移
- 生成迁移文件:根据模型类生成创建表的语句
python manage.py makemigrations - 执行迁移:根据第一步生成的语句在数据库中创建表
python manage.py migrate
8,本地化
9,创建管理员
python manage.py createsuperuser ---创建超级管理员
10,注册模型 - 在admin.py中操作
从django.contrib 导入 管理
从Book.models 导入 *
#在这里注册你的模型。
#注册书籍模型
admin.site.register(的BookInfo)
#自定义站点管理界面的类:重写list_display属性
class PeopleAdmin(admin.ModelAdmin):
list_display = [ 'id' ,'name' ,'gender' ,'book' ]
#注册人物模型
admin.site.register(PeopleInfo ,PeopleAdmin)
11,视图操作
从django.shortcuts 导入 渲染
#导入HTTPesponse模块
从django.http 导入 HttpResponse
从Book.models 导入 *
def 索引(请求):
#准备上下文:定义在字典中(测试数据)
context = { 'title' :'测试模板处理数据' }
#将上下文交给模板中的进程处理,处理后视图想用给客户端
返回 呈现(请求,'Book / index.html' ,上下文)
def bookList (request):
#查询数据库书籍列表数据
bookInfos = BookInfo.objects.all()#数据库中读取数据
#构造上下文
context = { 'booklist' :bookInfos}
返回 呈现(请求,'Book / booklist.html' ,上下文)
def peopleList (request ,bookid):
#查询数据库人物列表数据
book = BookInfo.objects.get (id = bookid)#读取数据
#外键查询:人物所属于哪本书
peopleInfos = book.peopleinfo_set.all()#读取数据
#构造上下文
context = { 'peoplelist' :peopleInfos}
返回 render(request ,'Book / peoplelist.html' ,context)
应用网址
从 django.conf.urls 导入 网址
导入Book.views
urlpatterns = [
url(r'^ $' ,Book.views.index),
url(r'^ booklist / $' ,Book.views.bookList),
url(r'^(\ d +)/ $' ,Book.views.peopleList)
]
管理器网址
urlpatterns = [
URL(R '^管理员/' ,包括(admin.site.urls)) ,
#应用中定义URLconf,包含到项目URLconf中
#正则为:只要不是'admin /'就算匹配成功
url(r'^' ,include('Book.urls' ))
]
12,HTML文件
书目
<!DOCTYPE html >
<html lang = “en” >
<HEAD>
<meta charset = “UTF-8” >
<TITLE> 书籍列表信息</ TITLE>
</ HEAD>
<BODY>
<UL>
{%为本书在书目%}
{%endfor %}
</ UL>
</ BODY>
</ HTML>
peoplelist
<!DOCTYPE html >
<html lang = “en” >
<HEAD>
<meta charset = “UTF-8” >
<TITLE> 人物列表信息</ TITLE>
</ HEAD>
<BODY>
<UL>
{%为人物列表中的人员 %}
<li> {{ people 。名称}} </ li>
{%endfor %}
</ UL>
</ BODY>
</ HTML>