Django学习

Django

MVC

View:负责数据的显示和呈现,View是对用户的直接输出

Controller:负责从用户端收集用户的输入,可以看成提供View的反向功能,主要处理用户交互。

Model:用于封装与应用程序的业务逻辑相关的数据及对数据的处理方法,是Web应用程序中用于处理应用程序的数据逻辑部分,Model通常只提供功能性的接口,通过这些接口可以获取Model的所有功能

image

MVT

Model:负责业务对象与数据库(ORM)的对象

View:负责业务逻辑,并在适当的时候调用Model和Template

Template:负责把页面展示给用户

Django中还有一个url分发器(也可以叫做路由),主要用来将一个个URL页面的请求分发给不同的View进行处理,View再调用相应的Model和Template。

image

CS/BS

客户端和服务器交互模型

Server

Web后端

Python

Java

Php

Go

Django

Flask

Client

Browser

MVC

软件架构风格

将数据操作、业务处理、界面展示进行了拆分

核心思想:解耦合

不是标准

松耦合

Model

模型

封装数据和交互操作

CRUD

View

视图

是用来将数据呈现给用户

Controal

控制器

接受用户输入

用来协调Model与View的关系,并对数据进行操作,筛选

流程

控制器接受用户请求

调用模型,获取数据

控制器将数据展示到视图中

Hello Django

1、虚拟环境

deactivate

workon

mkvirtualenv

rmvirtualenv

创建虚拟环境

退出虚拟环境

再次进入虚拟环境

删除虚拟环境

2、安装

pip install django==1.11.7

pip install django==1.11.7 -i https://pypi.douban.com/simple

3、创建项目

django-admin startproject XXX

项目结构

XXX

manage.py

XXX

管理整个项目结构

以后的命令基本都通过它来调用

init

setting

urls

wsgi

项目全局配置文件

根路由

用在新项目部署上,前期用不上

4、启动项目

python manage.py runserver

默认运行在本机的8000端口上

还可以添加参数

使用开发者项目服务器

{[ip:]port}

0.0.0.0

代表本机所有的ip

5、创建一个应用

python manage.py startapp App

App结构

models

apps

views

tests

init

migrations

视图函数

模型

应用配置

单元测试

init

迁移目录

将应用注册到项目的setting中的INSTALLED_APPS中

7、编写一个请求

6、请求流程

Browse->urls

models->views

views->models

views->response

编写一个路由

url(p1,p2)

p1 正则匹配规则

urlpatterns

p2 对应的视图函数

编写视图函数

只是默认第一个参数是response

必须返回response

本质上还是一个函数

HttpResponse

render

8、连接数据库

默认在django中集成数据库

修改数据库

轻量级数据库

没用户名,没密码

SOLite

常用的场景 Android,IOS,WP

实际上都是关系型数据库

mysql

在settings中的DATABASES中进行修改

驱动

渲染

简写

mysql-python

pymysql

mysqlcient

会伪装

install_as_mysqldb()

最好用,最常用

迁移

生成迁移

执行迁移

USER

PASSWORD

HOST

PORT

NAME

ENGINE

连接数据库的名字

引擎

python manage.py makemigrations

python manage.py migratiate

才会真正的在数据库产生表

9、数据惭怍

10、显示在模板中

数据查询

更新

存储数据

删除

增删改查

创建对象进行save()

模型.object.all()

模型.object.get()

基于查询

save()

基于查询

delete()

在填坑

模板的兼容性很强

先挖坑

浏览器不认模板

{{var}}

上下文是一个字典{var:value}

key就是var,value就是要传入的值

模板渲染的时候上下文传递进来

不传入不会报错

多传入也会自动优化掉

在到达浏览器之前,已经进行了转化。将模板装华为html

for支持

11、数据级联

foreignKey

多记一

一获取多

一对多

多获取一

多的set

就是一个书写的属性