回顾补充

  1. 一个完整的软件结构,包含了和用户交互的软件界面、进行数据处理的后端程序、实现数据存储的数据库三个部分;

通过前端交互界面展示数据或者获取用户输入的数据,将数据传递给后端处理程序[传递请求参数];后端处理程序处理完数据,将数据永久保存[持久化]到数据库中。
通过后端处理程序可以从数据库中读取数据,经过处理之后传递给前端网页进行展示

图1

2. Django创建的web项目,文件结构 & 项目结构
文件结构:每个文件的意义[文件的作用和所处的位置]

|-- mysite/         # 项目根目录
     |-- mysite/          # 根项目 只能出现1个,在创建项目时同时创建
          |-- settings.py    # 项目信息配置,如项目的语言
          |-- urls.py         # 项目主路由配置
     |-- myblog/          # 子应用模块,可以出现0~n个
          |-- app.py           # 子应用模块的信息描述
          |-- models.py       # 子应用模块中的模型
          |-- urls.py          # 子应用模块中的自路由,需要包含到主路由中
          |-- views.py         # 子应用视图处理模块,通过路由来调用函数
          |-- models_manager.py # 管理器模块[可选]
     |-- manage.py       # 命令模块

项目结构:项目组织形式[架构方式]~通过根项目模块,管理所有的子项目模块

|-- 根项目
      |-- 子模块项目[单独的项目]<INSTALLED_APPS | urls -> 接入跟项目>
      |-- 子模块项目[单独的项目]
      |-- ..
功能的扩展性和可伸缩性及可维护性非常的强大!
扩展性:Django可以在尽量少的修改源代码的基础上,增加强大的新功能[OCP]
可伸缩性:Django的项目功能,可以在互相不影响的情况下,动态的增加或者减少不同的项目功能
可维护性:不同的项目功能分布在不同的子模块应用中,如果某个功能出现巨大的问题,只需要停用这个模块项目即可,不影响其他的模块项目的正常功能

3. Django的设计结构——MVT处理模式
MVT处理模式一种编程思想,由数据模型Model,视图模块view和模板系统Template组成;并且添加了路由url的功能实现请求分发操作,完成实际流程的处理
一个完成的流程就是客户端请求发送之后,通过路由Urls分配请求到具体的视图处理函数views中进行操作,调用普通处理函数处理具体的数据模型models,将数据增加/修改/删除/查询到数据库的操作,最后普通处理函数返回处理结果给视图处理函数views,view中将数据填充到模板template中返回给客户端浏览器进行展示。

图2

听说过MVC处理模式吗?听说过MVP处理模式吗?听说过MVT处理模式吗?
MVC是最基本的一种编程思想,主要解决的是一个问题的处理流程,通过三个组成部分[封装数据的模型model,进行数据展示和采集的视图view,以及进行请求分发的控制器controller]完成问题处理流程的一种操作模式;在这种操作模式中,控制器完成视图和模型之间数据自动交互的桥梁,视图发起的请求会由控制器进行转发调用后端程序的处理函数进行数据model的处理,处理完成之后返回结果给控制器,控制器根据处理的结果返回不同的视图页面进行展示;在现行的MVC处理模式中,发展过程中将视图和模型的数据进行了双向绑定,视图中的数据发生变化,模型中的数据会自动变化,同样的模型中的数据一旦发生改变,视图中的数据同时变化。
MVP处理模式,是在MVC处理模式上,为了区分数据的绑定方式而杜撰的一个处理模式
MVP处理模式~前后端数据的交互,必须通过主动交互才能发生改变。
MVT处理模式,参考上图

4. Django项目搭建过程

a.  创建项目[Django项目在创建时,会自动创建根项目,是包含在根目录中的]
>>> django-admin startproject <name>
>>> eg. django-admin startproject mysite
b.  创建子应用模块
mysite>>> django-admin startapp <model_name>
mysite>>>eg. django-admin startapp myblog
c.  注册子应用模块给根项目
(1) 修改mysite/mysite/settings.py配置文件
..
INSTALLED_APPS = [
   ..
   ‘myblog’,
]
(2) 修改主路由文件mysite/mysite/urls.py
from django.conf.urls import url, include

urlpatterns = [
url(r”myblog/”, include(“myblog.urls”)),
..
]
d.  根项目的网页视图以及静态文件处理[所有子应用模块公共的]
(1) 配置根网页视图文件夹,修改mysite/mysite/settings.py
..
TEMPLATES = {
..
DIRS: [“temp”]   # mysite/temp/
..
}
(2) 配置根项目静态文件路径,修改mysite/mysite/settings.py
添加新的配置
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, “static”)   # mysite/static/
]
e.  配置子应用模块的网页模板以及静态文件
子应用模板的网页模板和静态文件不需要配置,而是Django内置的加载器对象,自动在子应用模块中进行查询[网页和静态文件]

子应用模块网页文件:在子应用模块中templates/文件夹下
子应用模块的静态文件:在子应用模块中static/文件夹下

实际操作过程中,为了和根项目网页和静态文件做区分,所以要进行路径隔离
eg:
mysite/myblog/templates/myblog/index.html
mysite/myblog/static/myblog/css/index.css

5. Django中的数据模型定义

数据模型:自定义的类型,可以创建对象,用于封装我们正在使用的数据,可以方便的和数据库进行交互
a.  连接数据库:mysite/mysite/settgins.py
import pymysql
pymysql.install_as_MySQLdb()

DATABASES = {
‘detault’:{
    ‘ENGINE’: ‘django.db.backends.mysql’
    ‘NAME’: ‘db_name’
    ‘USER’: ‘root’
    ‘PASSWORD’: ‘’
}
}
b.  定义数据模型
from django.db import models
class MyObject(models.Model):  # 自定义类型必须继承Model类型
     id = models.AutoField(..)   # 类型的属性,必须通过Django方法创建
c.  数据交互[数据和数据库之间的增删改查]
(1) 通过类型本身进行操作
models.MyObject.objects.all()/filter()/..

m = MyObject()创建一个对象
m.save()/delete()/update()
(2) 通过管理器对象进行操作
自定义管理器对象,继承Django内置的Manager类型
class MyObjectManager(models.Manager):
def create_obj(self, **kw):
    pass
def delete_obj(self, **kw):
    pass
def update_obj(self, **kw):
   pass
..

6. 网页前端和后端程序之间的交互

(1) 网页前端发送数据给后端程序
前端网页的数据:用户输入(表单)、超链接、URL地址直接访问
前端->后端程序:数据的传递:请求参数

前端 传递数据  后端程序
HTTP1.1标注:8种传递方式
常见4种传递方式[GET/POST/PUT/DELETE]
项目中常用的2中传递方式[GET/POST]

扩展:项目中,还有一种特殊的GET传递方式:RESTful
   get传递
   post传递
   restful传递
RESTful传递的参数,包含在url路径中
url路径是通过路由进行配置
参数需要通过路由进行设置

url(r’^param/(?P<name>[a-z]+)/rest/$’, views.rest_test)
()表示这里需要一个参数
?要使用指定的语法
P:param,表示参数描述
<name>:表示接受的参数数据,会放在一个名称为name的变量中
[a-z]+:表示这个参数只接受小写的1个或者多个字符
def rest_test(request, name):
    pass

(2) 后端程序传递数据到网页进行展示
模板语法:Templates
变量|程序结构|过滤器|注释
{{name}} | {% 标签 %}

变量[普通|对象|列表|字典|..] {{变量名称}}
标签{% %}
    程序结构 {%if%}..{%for%}..{%csrf_token%}..{%commend%}
    {%block%}..{%load%}..{%url%}..{%static%}
过滤器{{变量 | 过滤器}}
注释:{%comment%}{%endcomment%}
    常规的网页注释,不会影响变量数据的输出

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,830评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,992评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,875评论 0 331
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,837评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,734评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,091评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,550评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,217评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,368评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,298评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,350评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,027评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,623评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,706评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,940评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,349评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,936评论 2 341

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,566评论 18 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,271评论 25 707
  • 谈谈 MVX 中的 Model 谈谈 MVX 中的 View 谈谈 MVX 中的 Controller 浅谈 MV...
    Draveness阅读 14,808评论 0 60
  • 瑜伽 不光是一种锻炼身体的方式 还是一种 让心灵和身体 与自然结合的一个通道 也许我们每个人 一辈子也不可能拥有一...
    一叶茶阅读 139评论 0 2
  • 姓名:贾志诚身高:175CM来自:内蒙古包头市:13岁时,迷恋网络游戏,最终辍学离开了校园;自此,贾志诚便踏上社会...
    05668594f2ac阅读 198评论 0 1