Django学习笔记-01

/ 0评 / 0

1. Django框架

框架:基于前人经验基础上,将常用或通用的东西抽离出来做的解决方案。django是python众中框架中优秀的娇娇者。

  1. 官网网址:https://www.djangoproject.com中文文档:https://yiyibooks.cn更快速、更少代码以更轻松的方式搭建更好的Web应用。开源框架、以python语言编写,采用MTV(model、view、template)框架模式。
  2. 历史 最早以做CMS(新闻和内容管理系统)开始。05年7月发布1.0
  3. 组成部分一个重量级的python web框架,Django配备了常用的大部分组件
    1. 基本配置 ,[settings.py]文件 c为项目开发带来很大的灵活性
    2. 路由系统 ,[urls.py]文件必备模块,用户在地址栏输入网址,请求发送到服务器时,最先进入路由模块,在该模块匹配路由,并最终找到某个视图函数去处理。
    3. 原生HTML模板系统 , [Templates]目录视图 view, [views.py] 文件  V必备模块(最重要模块)。通过视图类或视图函数实现项目业务逻辑。大部分编码写在视图模块。
    4. Model模型,数据库连接和ORM数据库管理, [models.py]文件  M必备模块。通过orm技术访问和操作数据库
    5. 中间件
    6. Cookie & Session
    7. 分页
    8. 数据库后台管理系统admin
  4. cMTV模式与常见的mvc模式对比
  5. Django用途
    • 在线语音/图像识别服务器开发
    • 在线第三方身份验证服务器等
    • 网站后端开发
    • 微信公众号、微信小程序等后台开发
    • 基于HTTP/HTTPS协议的后台服务器开发
  6. Django版本选择
    • 最新版本为3.1.6
    • 建议使用2.2.12 LST

2. Django安装

  1. 查看已安装的版本
    >>> import django
    >>> print(django.VERSION)
  2. 安装
    • 下载安装包
    • 安装离线包
    1. 在线安装
      # 安装django最新版本
      $ sudo pip3 install django
      # 安装django指定版本
      $ sudo pip3 install django[==版本]
    2. 离线安装
      $ tar -xvf Django-2.2.12.tar.gz
      $ cd Django-2.2.12
      $ sudo python3 setup.py install
  3. Django卸载
    $ pip3 uninstall diango
  4. Django开发环境Django 2.2.12支持Pthon 3.5, 3.5, 3.7, 3.8

3. Django项目目标结构

  1. 创建项目指定
      # 创建
      $ django-admin startproject 项目名称
      # 运行
      $ cd 项目名称
      $ python3 manage.py runserver [端口,默认8000]
  2. 示例
      $ django-admin startproject mysite1
      $ tree mysite1/
      mysite1/
      ├── manage.py
      └── mysite1
          ├── __init__.py
          ├── settings.py
          ├── urls.py
          └── wsgi.py
     
      1 directory, 5 files
  3. 项目目录结构解析
    • 项目包的主文件夹(默认与项目名称保持一致)
    • __ init __.py
    • wsgi.py
    • urls.py
    • setting.py
    • 包括初始化文件,当此项目包被导入(import)时文件会自动运行
    • WSGI即Web Server Gateway Interface
    • WEB服务网关接口的配置文件,仅部署项目时使用
    • 项目主路由文件,所有的动态路径必须先与该文件进行匹配
    • Django项目的配置文件,此配置文件中的一些全局变量将为Django框架运行传递一些参数
    • setting.py配置文件,启动服务时自动调用
    • 此配置文件中可以定义自定义的变量用于作用于全局作用域的数据传递
    • python3 manage.py reunserver 启动服务
    • python3 manage.py startapp 创建应用
    • python3 manage.py migrate 数据库迁移
    • manage.py此文件是项目管理的主程序,在开发阶段用于管理整个项目的开发运行调试Manage.py 包含项目管理的子命令,如:
    • 项目文件夹
  4. settings.py文件介绍https://docs.djangoproject.com/en/2.2/ref/settings/
    • 英文:“en_us”
    • 中文:“zh_Hans”
    • 世界标准时间:“UTC”
    • 中国时区:“Asia/Shanghai”
    • True表示开发环境中使用「调试模式」(用于开发中)
    • False表示当前项目运行在「生产环境」 (不启用调试)
    1. [] 空列表,只有host请求头为[127.0.0.1],[loclhost]能访问本项目; DEBUG=True时生效;
    2. [*] 表示任何请求头host都能访问到当前项目
    3. ['192.168.1.3','127.0.0.1'] 表示只有当前两个host头的值能访问当前项目注意:如果要局域网其它主机也能访问此主机,启动方式应使用如下模式:
      python3 manage.py runserver 0.0.0.0:8000
    4. INSTALLED_APPS指定当前项目安装的应用列表
    5. MIDDLEWARE用于注册中间件
    6. TEMPLATES用于指定模板的配置信息
    7. DATABASES用于指定数据库的配置信息
    8. LANGUAGE_CODE用于指定语言配置
    9. TIME_ZONE用于指定当前服务器端时区
    10. ROOT_URLCONF用于配置根极url配置「projectname.urls」

      此模块可以通过from django.conf import settings导入和使用

    11. BASE_DIR    用于绑定当前项目的绝对路径(动态计算出来的),所有文件都可以依赖此路径
    12. DEBUG    用于配置Django项目的启动模式,取值:
    13. ALLOWD_HOSTS    设置允许访问到本项目的host请求头的值:

4.URL介绍

  1. URL定义
    • protocol(协议)        http://   https://     file:///
    • hostname(主机名)  存储资源服务器的域名(主机名)、域名或IP地址
    • Port(端口)       省略时使用默认端口 80 /443
    • Path(路由地址)    由零个或多个“/”隔开的字符串,表示主机上的一个目录或文件地址。
    • Query(查询)   可选,用于给动态网页传递参数,可有多个参数,用"&"符号隔开,每个参数的名和值用“=”符号隔开。
    • Fragment(信息片断) 字符串,用于指定网络资源中的片断。例如网页中有多个名词解释,可使用fragment直接定位到某一名词解释。
    • URL:统一资源定位符 Uniform Resource Locator
    • 作用:表示互联网上某个资源的地址
    • 互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。
    • URL语法格式
      protocal://hostname[:port]/path[?query][#fragment
    • 说明:
      • ​protocol(协议)        http://   https://     file:///
      • hostname(主机名)  存储资源服务器的域名(主机名)、域名或IP地址
      • Port(端口)       省略时使用默认端口 80 /443
      • Path(路由地址)    由零个或多个“/”隔开的字符串,表示主机上的一个目录或文件地址。
      • Query(查询)   可选,用于给动态网页传递参数,可有多个参数,用"&"符号隔开,每个参数的名和值用“=”符号隔开。
      • Fragment(信息片断) 字符串,用于指定网络资源中的片断。例如网页中有多个名词解释,可使用fragment直接定位到某一名词解释。

5. Django如何处理一个URL对应的请求

浏览器 http://127.0.0.1:8000/page/2021
1、Django 从配置文件中 ROOT_URLCONF找到主路由文件;默认该文件在同名项目目录下的urls;
2、Django 加载主路由文件中的urlpatterns变量
3、依次匹配 - urlpatterns中的URL,匹配到第一个合适中断后续匹配
4、匹配成功 - 调用对应的视图函数处理请求,返回响应
5、匹配失败 - 返回404响应

主路由 - urls.py样例
from django.urls import path
from . import views
urlpatterns = [
 path('admin/',admin.stie.urls),
 path('page/2021',view.page_2021),
 path('page/2022',view.page_2022),
]
  1. 视图函数(view)
    def xxx_view(request[,其它参数...]): return HttpResponse对象 
    • 参数:request用于绑定HttpRequest对象,通过此对象可以获取浏览器参数和数据
    • 返回值:HttpResponse对象;Django会提供一系列的response对象;
    • 视图函数:用于接收一个浏览器请求并通过HttpResponse对象返回数据的函数。
    • 视图处理函数语法格式:
  2. Django路由配置
    • settings.py中「ROOT_URLCONF」指定了主路由配置列表urlpatterns的文件位置
    • urls.py主路由配置文件
  3. path()函数
    • Path(route,views,name=None)
    • 参数:
    • 用于描述路由与视图函数的对应关系
    • 模块 from django.urls import path
    • 语法:
    1. Route:字符串类型,匹配的请求路径
    2. Views:指定路径对应的视图处理函数的名称
    3. Name:为地址起别名,在模板中地址反向解析时使用
  4. path转换器语法:<转换器类型: 自定义名>作用:若转换器类型匹配到对应类型的数据,则将数据按照关键字传参的方式传递给视图函数
    转换器    效果   案例
    str 匹配除'/'之外的非空字符串 “v1/users/< str:username >”匹配/v1/users/xxxxx
    int 匹配0或任何正整数。返回int "page/< int:page >"匹配/page/111
    slug 匹配任意ASCII字符(含特殊) “detail/< slug:sl >”匹配/detail/diango_$a
    path 匹配非空字段,含路径分隔/ "v1/users/< path:ph >"匹配/v1/abc/e/f/g
  5. 5. re_path()函数

在url匹配过程中使用正则表达式进行精确匹配

语法:

    1. re_path(reg,view,name=xxx)
    2. 正则表达式命名分组模式(?P<name>pattern);匹配提取参数后用关键字传参方式传递给视图函数
# file : <项目同名文件夹>/urls.py 
# 以下示例匹配 
# 可匹配 http://127.0.0.1:8000/20/mul/40 
# 不可匹配 http://127.0.0.1:8000/200/mul/400 
urlpatterns = [ 
      path('admin/', admin.site.urls), re_path(r'^(?P<x>\d{1,2})/(?P<op>\w+)/(?P<y>\d{1,2}) ,views.cal_view), 
]

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注