Django面试题

本文详细介绍了Django的相关面试知识点,包括项目创建命令、项目结构、MVC与MVT模型的区别、数据库查询操作、中间件的理解、uWSGI与Nginx的协同工作、RESTful API设计、缓存机制、HTTP请求处理流程、Session与Cookie的区别、QuerySet的get与filter方法、登录状态跨应用问题、重定向实现、数据查询排序与过滤、Django部署与数据库设计等方面。
摘要由CSDN通过智能技术生成

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 服务器。

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

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值