目录

雪月书韵茶香

昨夜西风凋碧树,独上高楼,望尽天涯路


X

Django入门篇(一)

Python 安装

官网下载相应的 Python 版本 https://www.python.org/downloads/

双击运行安装包

将Python添加到环境变量

命令行中输入python,检查是否安装成功,出现了python的版本号以及 >>>,则安装成功

本片博文基于python3.7
enter description here

需要具备简单python基础 以及html 、css、JavaScript 前端基础
enter description here

Django简介

读音 [将狗] D不发音
Django是用python语言开发的一个开源的Web开发框架
采用MTV的框架模式,即模型(Model)、模版(Template)和视图(Views),三者之间各自负责不同的职责

Django的MTV设计模式


对于MTV设计模式:
M即Model,数据存取层,这一层处理所有与数据有关的事务,提供在数据库中管理(添加、修改、删除、查询)的机制.

T即Template,表现层,处理页面的显示,即所有与表现相关的决定都有这一层来处理

V即View,业务逻辑层,负责处理业务逻辑,会在适当的时候讲Model与Template组合在一起,通常被认为是连通M与T的桥梁.

Django中的功能模块

1.ORM模型:

全称 Object Relational Mapping(对象关系映射),它把对象与数据库中的表关联起来,对象的属性映射到表的各个字段,同时它把对表的操作对应到对对象的操作,实现了对象到 SQL,SQL 到对象的过程转换

2.视图

视图在 Django 中的体现是一个 Python 函数或者是类,接收 Web 请求并返回 Web 响应

3.模版系统 :

模板系统用于将页面设计的 HTML 代码和用于逻辑处理的 Python 代码分离开来,即做到了数据与逻辑的分离,去除不同代码之间的耦合

4. 路由系统:

用户向 Web 站点发送请求(对应到一个 url),首先会 到达“对应的”视图,那么,这里的视图是怎么对应上的呢?这就是 Django 路由系统的作用。
Django利用 URLconf 构建起 URL 模式与视图函数之间的映射关系,即利用 Django 的特定配置方式,设定好哪个 url 可以去执行哪一段 Python 代码

5. Admin后台管理系统

对系统中定义的数据表(Model)提供了原生的后台管理支持,且支持对管理页面的个性化定制,如针对字段值的过滤功能、搜索功能、排序功能,数据表字段的展示顺序规则定义功能,字段归类功能等等

6. Auth认证系统:

Auth认证系统:提供了用户、用户组、权限等概念;维护了用户、用户组和权限之间的关联关系;包含了用户鉴权与登录等基本功能

7.表单系统:

表单系统可以根据 Form 对象的定义,自动生成 HTML 表单元素、检查表单数据的合法性、对不合法的表单数据进行回显,并提示错误、将表单数据转换为对应的 Python 数据类型

8.缓存系统:

缓存系统:有时访问 Web 站点的某一个服务会发现执行的比较慢,这种情况发生的原因可能是背后有复杂的计算逻辑,也可能是访问数据库系统或者文件系统造成的 IO 延迟等等。
通常提高 Web 站点执行效率的方法是使用缓存,将经常被用户访问到的页面结果保存下来,再次访问时只需要返回缓存的结果,不会再次执行计算等类似耗时的操作。
Django 提供一个健壮的缓存系统,实现了不同级别的缓存粒度。

Django安装

pip是一个python的第三方开源库的下载与安装工具

   pip   install   --upgrade  pip
   pip   install   Django==3.1.1

Django基础命令

enter description here

创建一个django项目:django-admin startproject  项目名称
项目中创建一个应用:python manage.py startapp  应用名称
启动开发服务器:python manage.py runserver 0.0.0.0:8000 
创建数据库更改文件:python manage.py makemigrations 
同步更新到数据库:python manage.py migrate 
进入调试代码的调试模式:python manage.py shell

创建第一个Django项目

django-admin startproject  mysite # (项目名称可以改变)mysite是项目名

可以用vscode编辑或者使用pycharm 等IDE 打开创建的文件

enter description here

init.py 表示包裹着它的上层目录是个python包,一般情况下无须修改
asgi.py 用于启动异步通信服务
settings.py 项目的配置文件,数据库等的配置都在这个配置文件中
urls.py 项目的路由设置,设置网站的具体网址内容
wsgi.py 全称为Python Web Server Gateway Interface, 即Python服务网关接口,是Python应用与Web服务器之间的接口,用于 django 项目在服务器上的部署和上线, 暂时不需要修改
manage.py 命令行工具,内置多种方式与项目进行交互

init.py 表示包裹着它的上层目录是个python包,一般情况下无须修改
asgi.py 用于启动异步通信服务
settings.py 项目的配置文件,数据库等的配置都在这个配置文件中
urls.py 项目的路由设置,设置网站的具体网址内容
wsgi.py 全称为Python Web Server Gateway Interface, 即Python服务网关接口,是Python应用与Web服务器之间的接口,用于 django 项目在服务器上的部署和上线, 暂时不需要修改
manage.py 命令行工具,内置多种方式与项目进行交互
init.py 表示包裹着它的上层目录是个python包,一般情况下无须修改
asgi.py 用于启动异步通信服务
settings.py 项目的配置文件,数据库等的配置都在这个配置文件中
urls.py 项目的路由设置,设置网站的具体网址内容
wsgi.py 全称为Python Web Server Gateway Interface, 即Python服务网关接口,是Python应用与Web服务器之间的接口,用于 django 项目在服务器上的部署和上线, 暂时不需要修改
manage.py 命令行工具,内置多种方式与项目进行交互

在终端中启动Django

python manage.py  runserver 127.0.0.1:8000

enter description here

在当前项目中创建一个应用

python manage.py  startapp app #(应用名称app可以变)

enter description here

app
migration 生成数据迁移文件,通过数据迁移文件可自动在数据库里生成相应的数据表
init.py 表示包裹着它的app目录是个python包
admin.py 用于设置当前应用的后台管理功能
apps.py 当前应用的配置信息,在Django 1.9 版本后才自动生成,一般情况下无须修改
models.py 定义数据库的映射类,每个类可以关联一张数据表,即MTV里面的模型(Model)
tests.py 自动化测试的模块,用于实现单元测试
views.py 视图文件,处理功能的业务逻辑,即MTV里面的视图

app
migration 生成数据迁移文件,通过数据迁移文件可自动在数据库里生成相应的数据表
init.py 表示包裹着它的app目录是个python包
admin.py 用于设置当前应用的后台管理功能
apps.py 当前应用的配置信息,在Django 1.9 版本后才自动生成,一般情况下无须修改
models.py 定义数据库的映射类,每个类可以关联一张数据表,即MTV里面的模型(Model)
tests.py 自动化测试的模块,用于实现单元测试
views.py 视图文件,处理功能的业务逻辑,即MTV里面的视图
app
migration 生成数据迁移文件,通过数据迁移文件可自动在数据库里生成相应的数据表
init.py 表示包裹着它的app目录是个python包
admin.py 用于设置当前应用的后台管理功能
apps.py 当前应用的配置信息,在Django 1.9 版本后才自动生成,一般情况下无须修改
models.py 定义数据库的映射类,每个类可以关联一张数据表,即MTV里面的模型(Model)
tests.py 自动化测试的模块,用于实现单元测试
views.py 视图文件,处理功能的业务逻辑,即MTV里面的视图

每创建一个应用就要在配置文件 settings.py 中注册这个应用

enter description here

编写第一个视图函数

打开 ”app/views.py”,输入以下代码
enter description here

在app目录里新建一个urls.py ,然后在”app/urls.py ”中,输入如下代码:
enter description here

在根URLconf文件中指定创建的app的urls模块,在mysite/urls.py中,代码如下:

!enter description here

你的helloworld

python manage.py  runserver 127.0.0.1:8000

enter description here

第一个HelloWorld注意事项

  1. 记得保存代码,随手Ctrl+S
  2. 检查一下,不要忘记导入对应的包
  3. 项目的根路由(mystie.urls)和应用路由(app.urls)是组合使用的,注意路由拼接时候的斜杠,不要多写

涉及函数介绍

include函数 : 允许引用其它 URLconfs
每当 Django 遇到 include() 时,它会截断与此项匹配的 URL 的部分,并将剩余的字符串发送到 URLconf 以供进一步处理

url相关知识点介绍

url参数

在 url 后边用 ? 开始,键与值用等号连接,每对键值用 & 号区分,如:

http://127.0.0.1:8000/app/index/?name=xiaoming&age=18

在路由的参数中用分隔符分开,如:
http://127.0.0.1:8000/app/index/xiaoming/18/

url参数类型

字符串类型:匹配任何非空字符串,但不包含斜杠,在不指定类型的前提下,默认字符串类型 str:name

整型:匹配 0 和正整数 int:age

uuid:匹配一个 uuid 格式的对象 <uuid: uid> 类似xxx-xx-xx

http常用状态码

enter description here
enter description here

视图读取参数的两种形式

修改应用路由
enter description here

? 形式的参数:request.GET.get(参数名)

enter description here

请求举例

http://127.0.0.1:8000/app/index/?name=xiaoming&age=18

enter description here

分隔符形式的参数:def index(request, 参数名, 参数名):

编写应用视图函数

enter description here

修改应用路由
enter description here

终端打印结果
enter description here

知识点补充

用户的请求对象request

浏览器向服务器发送的请求对象,包含用户信息,请求内容和请求方法
dir(request) 查看 request 对象的所有方法

常用request的方法
enter description here

返回对象

常用的返回对象

enter description here

模板

模板简介

MTV中的T部分: Template
是一种较为特殊的 HTML 文档
嵌入了一些能够让 Django 识别的变量和指令,然后由 Django 的模版引擎解析这些变量和指令,生成完整的 HTML 网页并返回给用户浏览

模板的配置

如何找到模版所在的位置?项目的配置文件 setting.py 中:

enter description here

定义模版引擎,用于识别模版里面的变量和指令,内置的模版引擎有:

django.DjangoTemplates
jinja2.Jinjia2

每个模版引擎都有自己的变量和指令语法

enter description here
设置模版所在的路径

告诉Django 在哪个位置查找模版的位置

enter description here
是否在App(应用)里查找模版文件

默认值为True

默认会到应用下的 templates 目录查找模版位置

一般将一些公共的页面,即所有应用都会用到的页面放在项目的 “templates”目录中

将应用独有的模版放在应用中的 “templates”目录中
enter description here

enter description here

上下文处理器,填充模版里面的变量,一般情况下不做任何修改

视图与模板的绑定

enter description here

在app下创建文件夹 templates ,并在templates文件夹下新建index.html 编写如下代码

enter description here

在mystie/setting.py中配置模板文件位置
不要忘记在开头导入os包
enter description here
在app/views.py中编写如下代码
enter description here

然后浏览器访问
enter description here

模板的变量(模板上下文)

上下文的数据由视图函数或视图类传递(放到字典中),它在模版中以 {{ variable }} 表示

支持 Python所有的数据类型,如:字符串、整型、字典、列表、元组或实例化对象

上下文的数据格式不同,在模版里的使用方式也有所差别

app/views.py 中:编辑代码如下
app/templates/index.html 中: 编写代码如下
浏览器请求结果如下:

enter description here

模板内置标签

标签是对模版上下文进行控制输出,在模版中以 {% tag %} 表示的,其中 tag 是标签的名称

for、if标签

enter description here

在for标签中,模板还提供了一些特殊的变量来获取for标签的循环信息

enter description here

app/templates/index.html 中:编写如下代码 进行练习

enter description here

 <h2>for、if标签:</h2>
    <ul>
        {% for class in classes %}
            {% if forloop.first %}
            <li> {{ class }} -- {{ forloop.counter }} -- {{ forloop.counter0 }} is first</li>
            {% elif forloop.last %}
            <li>{{ class }} -- {{ forloop.counter }} -- {{ forloop.counter0 }} is last</li>
            {% else %}
            <li>{{ class }} -- {{ forloop.counter }} -- {{ forloop.counter0 }} </li>
            {% endif %}
        {% endfor %}
    </ul>

结果如下

enter description here

url标签

在app/views中编写如下代码

enter description here

在app/templates/index.html中:编写如下代码

enter description here

在app/urls.py中编写如下代码
enter description here

浏览器请求 结果如下

enter description here

static标签

enter description here

内置过滤器

内置过滤器 用于在html模版中,对于渲染过来的数据进行二次操作使用,如替换、反序和转义

通过过滤器处理上下文变量可以将其数据格式或内容转化为我们想要的显示效果,而且相应减少视图函数的代码量

使用方法:{{ variable | filter }}

单个上下文变量可支持多个过滤器: {{ variable | filter 1| filter2 }}

过滤器可以传入一个参数,带参数的过滤器与参数之间使用冒号隔开, 并且冒号与参数之间不能有空格: {{ variable | date:"D d M Y" }}

enter description here

enter description here

enter description here

在app/templates/index.html中:编写如下代码
enter description here

浏览器中显示:
enter description here

自定义过滤器

在应用 app 下创建 templatetags 文件夹, 在 templatetags 文件夹下创建 myfilter.py
enter description here

在app/views.py中编写如下代码 向前端页面传递num值 值为4
enter description here

app/templates/index.html中:添加如下代码
enter description here

浏览器请求结果如下

enter description here


标题:Django入门篇(一)
作者:shuaibing90
版权声明:本站所有文章除特别声明外,均采用 CC BY-SA 4.0转载请于文章明显位置附上原文出处链接和本声明
地址:https://xysycx.cn/articles/2020/10/21/1603209785373.html
欢迎加入博主QQ群点击加入群聊:验证www.xysycx.cn