【Django】Django 基础知识梳理

本文深入探讨Django,一个基于Python的Web框架。内容涵盖Django的基础知识,包括请求生命周期、MVC与MVT模式、FBV与CBV、ORM理解以及中间件、restful规范等关键概念。同时,详细解析了Django的URL路由、缓存机制、认证与安全、模型继承、数据处理与查询集的特性,旨在帮助开发者深入理解Django的内部工作原理和最佳实践。
摘要由CSDN通过智能技术生成

1. Django

Django 是一个由 Python 编写的一个开放源代码的 Web 应用框架。使用 Django,只要很少的代码,Python 的程序开发人员就可以轻松地完成一个正式网站所需要的大部分内容,并进一步开发出全功能的 Web 服务 Django 本身基于 MVC 模型,即 Model(模型)+ View(视图)+ Controller(控制器)设计模式,MVC 模式使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。

Django的优点:

  • 自带ORM,强大的数据库功能
  • 自带强大的后台功能
  • 优雅的地址匹配
  • 易扩展的、简易且样式分离的模版系统
  • 与memcached等缓存系统联用表现出色,加载速度快
  • MVC模式,低耦合、开发快捷、部署方便、可重用性高

常用的一些命令:

# 创建项目
django-admin startproject xxx

# 项目根目录下运行服务器,通过浏览器访问http://127.0.0.1:8000/查看
python manage.py runserver

# 创建应用程序app,创建完成需要在setting.py文件中INSTALLED_APPS中添加app名称
python manage.py startapp xxx

# 启动数据库
python manage.py makemigrations

# 数据迁移
python manage.py migrate

# 创建超级用户
python manage.py createsuperuser

# 生成对应的ORM表结构
python manage.py inspectdb

2. Django请求生命周期

一般是用户通过浏览器向服务器发送一个请求(request),这个骑牛会去访问视图函数,如果不涉及到数据调用,那么这个时候视图函数返回一个模版也就是一个网页给用户,视图函数调用Model,模型去数据库查找数据,然后逐级返回,视图函数把返回的数据渲染到模版中,最后返回网页给用户。

大致步骤:

  • (1)wsgi请求封装后交给Web框架
  • (2)中间件,对请求进行校验或在请求中添加其他相关数据,如csrf/request.session
  • (3)路由匹配,根据浏览器发送的不同url去匹配不同的视图函数
  • (4)视图函数,在视图函数中进行业务逻辑的处理,orm–>templates–>渲染
  • (5)中间件,对相应的数据进行处理
  • (6)wsgi将响应的内容发送给浏览器

3. MVC模式与MVT模式

  • MVC

MVC(Model-View-Controller)即模型-视图-控制器,它们之间以一种插件式的、松耦合的方式连接在一起。其中,Model负责业务对象与数据库的映射(ORM);View负责与用户页面交互;Controller接受用户输入调用模型和视图完成用户的请求。

  • MVT

MVT(Model-View-Template)即模型-视图-模版,本质上与MVC是一样的,为了各组件之间保持松耦合关系。其中,Model负责业务对象与数据库的映射(ORM);View负责业务逻辑并在适当的时候调用Model和Template;Template负责如何把页面展示给用户(即html)。

4. FBV和CBV

  • FBV(Function Base View):就是在视图里面使用函数处理请求
  • CBV(Class Base View):就是在视图里面使用类处理请求

5. ORM的理解

ORM(Object Relational Mapping)即对象-关系-映射,是MVC或MVT框架中的一个重要部分,用于实现业务对象数据模型与数据表中字段映射,数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,极大减少了开发人员的工作量。常用的ORM库有sqlalchemy、django ORM。

6. 中间件的作用

中间件是一个用于处理Django的请求和响应的框架级别的钩子,每个中间件都负责做一些特定的功能。

中间件是介于request与response处理之间的一道处理过程,相对比较轻量级,并在全局范围内改变Django的输入和输出。

7. 谈谈restful规范的认识

首先restful是一种软件架构风格或者是一种设计风格,并不是标准,它只是提供了一种设计原则和约束条件,主要用于客户端和服务器交互类软件。就像设计模式一样,并不是一定要遵循这个原则,而是基于这个风格设计的软件可以更加简洁,层次更清晰。

一些常见的规范:

  • restful提倡面向资源编程,在URL接口中尽量要使用名词,不要使用动词
  • 在URL接口中推荐使用HTTPS协议,让网络接口更加安全
  • 在URL中可以体现版本号
  • URL中可以体现是否是API接口
  • URL中可以添加添加条件去筛选匹配
  • 可以根据HTTP不同的method,进行不同的资源操作
  • 响应式应该设置状态码
  • 有返回值值,而且格式为统一的json格式
  • 返回值错误信息
  • 返回结果中要提供帮助链接,即api最好做到Hypermedia

8. rest_framework框架中有哪些组件

  • 序列化组件:serializers 对queryset序列化以及对请求数据格式化校验
  • 路由组件:routers 进行路由分发
  • 视图组件:ModelViewSet 帮助开发者提供一些类和方法
  • 认证组件:写一个类并注册到认证类(authentication_classes),在类的authticate方法中编写认证逻辑
  • 权限组件:写一个类并注册到权限类(permission_classes),在类的has_permission方法中编写权限逻辑
  • 频率限制组件:写一个类并注册到频率类(throttle_classes),在类的allow_request/wait方法中编写频率限制逻辑
  • 解释器:选择多数据解析的类,在解析器类中注册(parser_classes)
  • 渲染器:定义数据如何渲染到页面上,在渲染器上注册(renderer_classes)
  • 分页:对获取的数据进行分页处理,pagination_class
  • 版本:版本控制用来在不同的客户端使用不同的行为

10. rest_framework实现用户访问频率控制

from rest_framework.throttling import SimpleRateThrottle

这里使用字节流类是继承了SimpleRateThrottle类,而这个类利用了django内置的缓存来存储访问记录。通过全局节流设置,所以的视图默认是使用UserThrottle类进行节流,如果不想使用默认的类就自定义给throttle_classes属性变量赋值,如throttle_classes=[VisitThrottle]

11. 路由匹配的原则

URLconf配置

from django.conf.urls import url

urlpatterns = [
    url(正则表达式, views视图, 参数, 别名),
]

"""
正则表达式:一个正则表达式字符串
views视图函数:一个可调用对象,通常为一个视图函数或者一个指定视图函数路径的字符串
参数:可循啊的要传递给视图函数的默认参数(字典形式)
别名:一个可选的name参数
"""

# Django2.0 路由系统的写法
from django.urls import path

urlpatterns = [
    path('articles/2003/', views
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值