您现在的位置是:首页 > 正文

Django框架基础知识点

2024-04-01 00:05:44阅读 1

Django框架

1.Django创建项目的命令
django-admin startproject 项目名称
python manage.py startapp 应用app名

2.Django创建项目后,项目文件夹下的组成部分
此题考的是学员对MVT 的理解
项目文件夹下的组成部分:
manage.py 是项目运行的入口,指定配置文件路径。与项目同名的目录,包含项目的配置文件。
init.py 是一个空文件,作用是这个目录可以被当作包使用。
settings.py 是项目的整体配置文件。
urls.py 是项目的URL配置文件。
wsgi.py 是项目与 WSGI 兼容的 Web 服务器。
manage.py 是项目运行的入口,指定配置文件路径。与项目同名的目录,包含项目的配置文件。
init.py是一个空文件,作用是这个目录可以被当做包使用

3.对 MVC,MVT 解读的理解
MVC:
M:Model,模型,和数据库进行交互
V:View,视图,负责产生 Html 页面
C:Controller,控制器,接收请求,进行处理,与 M 和 V 进行交互,返回应答。
在这里插入图片描述
(1) 用户点击注按钮,将要注册的信息发送给网站服务器。
(2)Controller 控制器接收到用户的注册信息,Controller 会告诉 Model 层将用户的注册信息保存到数据库
(3)Model 层将用户的注册信息保存到数据库
(4) 数据保存之后将保存的结果返回给 Model 模型,
(5)Model 层将保存的结果返回给 Controller 控制器。
(6)Controller 控制器收到保存的结果之后,或告诉 View 视图,view 视图产生一个 html 页面。
(7)View 将产生的 Html 页面的内容给了 Controller 控制器。
(8)Controller将Html页面的内容返回给浏览器。
(9)浏览器接受到服务器 Controller 返回的 Html 页面进行解析展示。

MVT:
M:Model,模型,和 MVC 中的 M 功能相同,和数据库进行交互。
V:view,视图,和 MVC 中的 C 功能相同,接收请求,进行处理,与 M 和 T 进行交互,返回应答。
T:Template,模板,和 MVC 中的 V 功能相同,产生 Html 页面.
在这里插入图片描述
(1)用户点击注册按钮,将要注册的内容发送给网站的服务器。
(2) View 视图,接收到用户发来的注册数据,View 告诉 Model 将用户的注册信息保存进数据库。
(3)Model 层将用户的注册信息保存到数据库中。
(4)数据库将保存的结果返回给 Model
(5)Model 将保存的结果给 View 视图。
(6)View 视图告诉 Template 模板去产生一个 Html 页面。
(7)Template 生成 html 内容返回给 View 视图。
(8)View 将 html 页面内容返回给浏览器。
(9) 浏览器拿到 view 返回的 html 页面内容进行解析,展示。

4.Django中models利用ORM对Mysql 进行查表的语句(多个语句)
字段查询
all():返回模型类对应表格中的所有数据。
get():
返回表格中满足条件的一条数据,如果查到多条数据,则抛异常:MultipleObjectsReturned, 查询不到数据,则抛异常:DoesNotExist。

filter():
参数写查询条件,返回满足条件 QuerySet 集合数据。
条件格式:
模型类属性名:条件名=值
注意:此处是模型类属性名,不是表中的字段名
关于 filter 具体案例如下:
判等exact
BookInfo.object.filter(id=1)
BookInfo.object.filter(id exact=1)此处的 exact 可以省略
模糊查询 like
例:查询书名包含’传’的图书。contains
contains BookInfo.objects.filter(btitle contains=’传’)
空查询 where 字段名 isnull
BookInfo.objects.filter(btitle isnull=False)
范围查询 where id in (1,3,5)
BookInfo.objects.filter(id in=[1,3,5])
比较查询 gt lt(less than) gte(equal) lte
BookInfo.objects.filter(id gte=3)
日期查询
BookInfo.objects.filter(bpub_date year = 1980)
BookInfo.objects.filter(bpub_date gt = date(1980,1,1))
exclude:返回不满足条件的数据。
BookInfo.objects.exclude(id=3)
F 对 象
作用:用于类属性之间的比较条件。
from django.db.models import F
例:where bread > bcomment BookInfo.objects.filter(bread gt =F(‘bcomment’))
例:BookInfo.objects.filter(bread gt=F(‘bcomment’)*2)
Q 对 象
作用:用于查询时的逻辑条件。可以对 Q 对象进行&|~操作
from django.db.models import Q
BookInfo.objects.filter(id gt=3, bread gt=30)
BooInfo.objects.filter(Q(id gt=3) & Q(bread gt=3))
例 :BookInfo.objects.filter(Q(id gt=3) | Q(bread gt=30))
例:BookInfo.objects.filter(~Q(id=3))
order_by 返 回 QuerySet
作用:对查询结果进行排序。
例 : BookInfo.objects.all().order_by(‘id’)
例 : BookInfo.objects.all().order_by(’-id’)
例 :BookInfo.objects.filter(id gt=3).order_by(’-bread’)
聚合函数
作用:对查询结果进行聚合操作。
sum count max min avg
aggregate:调用这个函数来使用聚合。
from django.db.models import Sum,Count,Max,Min,Avg
例:BookInfo.objects.aggregate(Count(‘id’))
{‘id count’: 5} 注意返回值类型及键名
例:BookInfo.objects.aggregate(Sum(‘bread’))
{‘bread sum’:120} 注意返回值类型及键名
count 函 数
作用:统计满足条件数据的数目。例:统计所有图书的数目。
BookInfo.objects.all().count()
例:统计 id 大于 3 的所有图书的数目。
BookInfo.objects.filter(id gt = 3).count()
模型类关系
1)一对多关系
例:图书类-英雄类
models.ForeignKey() 定义在多的类中。
2)多对多关系
例:新闻类-新闻类型类
models.ManyToManyField() 定义在哪个类中都可以。
3)一对一关系
例:员工基本信息类-员工详细信息类
models.OneToOneField() 定义在哪个类中都可以。

5.django 中间件的使用
Django 在中间件中预置了六个方法,这六个方法的区别在于不同的阶段执行,对输入或输出进行干预,方法如下:
(1)初始化:无需任何参数,服务器响应第一个请求的时候调用一次,用于确定是否启用当前中间件。
def init ():
pass
(2)处理请求前:在每个请求上调用,返回 None 或 HttpResponse 对象。
def process_request(request):
pass
(3)处理视图前:在每个请求上调用,返回 None 或 HttpResponse 对象。
def process_view(request, view_func, view_args, view_kwargs):
pass
(4)处理模板响应前:在每个请求上调用,返回实现了 render 方法的响应对象。
def process_template_response(request, response):
pass
(5)处理响应后:所有响应返回浏览器之前被调用,在每个请求上调用,返回 HttpResponse 对象。
def process_response(request, response):
pass
(6)异常处理:当视图抛出异常时调用,在每个请求上调用,返回一个 HttpResponse 对象。
def process_exception(request,exception):
pass

6.谈一下你对 uWSGI 和 nginx 的理解?
(1 )uWSGI 是一个 Web 服务器,它实现了 WSGI 协议、uwsgi、http 等协议。Nginx 中HttpUwsgiModule 的作用是与 uWSGI 服务器进行交换。WSGI 是一种 Web 服务器网关接口。它是一个 Web 服务器(如 nginx,uWSGI 等服务器)与 web 应用(如用 Flask 框架写的程序)通信的一种规范。
要注意 WSGI / uwsgi / uWSGI 这三个概念的区分。
WSGI 是一种通信协议。
uws

网站文章

  • 【环境踩坑】MAC M1安装 mysqlclient 报错

    【环境踩坑】MAC M1安装 mysqlclient 报错

    ImportError: dlopen(/Usersopt/anaconda3/lib/python3.9/site-packages/MySQLdb/_mysql.cpython-39-darwin...

    2024-04-01 00:05:37
  • Siri自定义Intent以及处理

    一、新建自定义Intent 1.Xcode->New->File->搜索Intent 2.左下角'+'号新建Intent 3.完善Intent资料 注意:1.Inte...

    2024-04-01 00:05:29
  • JSON解析的理解

    JSON解析的理解

    2019独角兽企业重金招聘Python工程师标准>>> ...

    2024-04-01 00:05:05
  • MongoDB的水平扩展,你做对了吗?

    MongoDB的水平扩展,你做对了吗?

    分布式数据库的前世今生当人们一开始使用数据库系统的时候,所有数据都是跑在一台服务器上,即所谓的单机数据库服务器。在企业级应用中,我们会搭建一台应用程序服务器,一般它会被运行在一台服务器或者工作站上,大多数情况下采用 Linux/Unix/Windows 操作系统,也有人把这样的服务器称之为应用程序服务器。顾名思义,他的作用是处理复杂的业务逻辑。但是一点需要注意的是,在这样的构架中,这台应用程...

    2024-04-01 00:04:58
  • 指针之交换两个变量的值 热门推荐

    指针之交换两个变量的值 热门推荐

    方案1:不使用指针  如果不使用指针交换两个变量的值,坦白来说是个不可能完成的任务,你可能会写成这样的:   #include "stdio.h"void swap(int a,int b) { int temp; temp = a; a = b; b = a; }int main() { int m = 1,n = 2; swap(m,n);

    2024-04-01 00:04:53
  • js键盘控制方块运动(自动运动,仅控制方向,到达屏幕边缘会自动反弹)

    <style> * { padding: 0; margin: 0; } .box { width: 100px; height: 100px...

    2024-04-01 00:04:47
  • 产品经理面试必问5大问题 (六)

    产品经理面试必问5大问题 (六)

    ​1在五年的时间内,你的职业规划?回答参考:从产品助理到产品经理的五年, 我想我会这样安排:第一年,把大量时间花在交互上,花在体验上,花在扣产品细节上面,认为完美的细节才能造就完美的产品;第二年,时间...

    2024-04-01 00:04:12
  • Redis使用学习汇总(十)之流

    Redis使用学习汇总(十)之流

    Redis数据结构:流

    2024-04-01 00:04:05
  • C++判断一个点和一个圆的关系(点在圆内、点在圆上、点在圆外)

    【代码】C++判断一个点和一个圆的关系(点在圆内、点在圆上、点在圆外)

    2024-04-01 00:03:39
  • 输入手机号码自动填充空格 变成3-4-4格式

    电话号码3-4-4格式实现方式在最近的开发中遇到将电话号码展示成3-4-4格式的需求(如:132 2222 3333这样子),乍一看这个要求挺简单的,因为只需要在满足长度的字符串固定位置加上相应的空格...

    2024-04-01 00:03:34