Django
文章平均质量分 69
web后端开发
敲代码敲到头发茂密
欲戴王冠,必承其重
展开
-
django——ORM常用查询总结
p=Projects.objects.only(“tester”,“name”)查询tester和name字段不会走数据库,走的是查询集查询其他字段,会重新走数据库查询;而p=Projects.objects.all()就不用走数据库查询了原创 2022-08-16 09:04:44 · 1994 阅读 · 63 评论 -
Django常见面试题总结(二)
会话跟踪技术,保留用户Cookie是由服务器创建,然后通过响应发送给客户端?的一个键值对。具体一个浏览器针对一个服务器存储的key-value({})Session是服务器端技术,利用这个技术,服务器在运行时可以为每一个用户的浏览器创建一个其独享的session对象,由于session为用户浏览器独享,所以用户在访问服务器的web资源时,可以把各自的数据放在各自的session中,当用户再去访问该服务器中的其它web资源时,其它web资源再从用户各自的session中取出数据为用户服务。...原创 2022-07-19 08:16:41 · 1690 阅读 · 34 评论 -
Django常见面试题总结(一)
非常重要)全称PythonWebServerGatewayInterface,指定了web服务器(nginx)和web框架之间的标准接口,以提高web应用在一系列web服务器间的移植性。中间件是一个用来处理Django的请求和响应的框架级别的钩子。它是一个轻量、低级别的插件系统,用于在全局范围内改变Django的输入和输出。每个中间件组件都负责做一些特定的功能。中间件是介于request与response处理之间的一道处理过程,相对比较轻量级,并且在全局上改变django的输入与输出。...原创 2022-07-18 08:35:37 · 5607 阅读 · 12 评论 -
django进阶总结(xmind格式)
以xmind格式总结django知识原创 2022-07-03 05:30:00 · 574 阅读 · 30 评论 -
【django】django面试题总结
Django在中间件中预置了六个方法,这六个方法的区别在于不同的阶段执行,对输入或输出进行干预,方法如下:1.初始化:无需任何参数,服务器响应第一个请求的时候调用一次,用于确定是否启用当前中间件2.处理请求前:在每个请求上调用,返回None或HttpResponse对象。3.处理视图前:在每个请求上调用,返回None或HttpResponse对象。4.处理模板响应前:在每个请求上调用,返回实现了render方法的响应对象。5.处理响应后:所有响应返回浏览器之前被调用,在每个请求上调用,返回HttpR原创 2022-06-24 05:00:00 · 2748 阅读 · 18 评论 -
Django处理枚举(枚举模型)以及source的使用
定义模型类models.py;项目模型类、接口模型类、用例模型类name = models.CharField(help_text='项目名称', verbose_name='项目名称',desc = models.TextField(help_text='项目描述', blank=True, null=True)verbose_name = "项目表"CHOICES = [('1', '项目接口'),('2', '外部接口')]原创 2024-04-14 15:39:33 · 1357 阅读 · 42 评论 -
django开发中遇到的问题总结
1、查a、获取测试计划下的所有测试用例?plan_obj.testcases.all()b、获取测试用例所在的测试计划有哪些?testcase_obj.planmodel_set.all()2、增3、改4、删删除:清空:二、迁移生成数据库表?当数据库脚本生成和迁移操作时,如果数据库中没有生成对应的表,首先需要检查模型类设计是否正确;接着将迁移脚本都删除,同时将数据库中的表也删除重新执行迁移脚本(文件不要删)to_internal_value():反序列化输入最开始校验的方法原创 2023-07-11 10:14:43 · 325 阅读 · 0 评论 -
【django项目开发】用户登录后缓存权限到redis中(十)
需要去数据库中频繁的读和写,为了项目提高运行效率,可以把用户的权限在每次登录的时候都缓存到redis中。这样的话,权限判断的中间件就可以方便的从redis中得到当前用户的所有权限,从而判断。对于那些数据量大,并且需要频繁的读写,一定需要做缓存的。以哈希的方式,存储数据到redis中。首先安装django-redis。登录操作后,查看缓存中的数据。获得redis数据库的连接。原创 2023-02-14 08:52:52 · 1525 阅读 · 2 评论 -
【django】模型类中数据的增删改查操作总结
Queryset对象是惰性计算的,当通过管理器创建queryset的时候,并不会直接去数据库中查询,只有真正的对queryset进行计算的时候才会到数据库中查询。什么时候?迭代、切片、索引、打印原创 2023-01-09 08:24:35 · 1615 阅读 · 39 评论 -
【django】各种关联关系的模型类设计
已知学生表、学生详情表、课程表、报名表、渠道表;其中学生表和学生详情表的关联关系为一对一;学生表和课程表的关系为多对多;学生表和渠道表的关系为一对多;虽然django会自定义第三张中间表,但是不能提供额外的字段,如果中间表需要包含其他字段,就需要自定义中间表,然后在定义多对多字段的时候,通过through参数指定第三张中间表。原创 2023-01-01 22:10:43 · 852 阅读 · 34 评论 -
【django】HttpRequest对象的属性和路由补充
等同于path('student/pk',views.student_detail)当将mouth和year进行调换位置。当将mouth和year进行调换位置。当传入非数字时:会报错。原创 2022-12-31 18:24:21 · 579 阅读 · 2 评论 -
Djando面试题——如何使用django加密
Django 内置的User类提供了用户密码的存储、验证、修改等功能,默认使用pbkdf2_sha256方式来存储和管理用的密码原创 2022-08-08 06:17:29 · 1214 阅读 · 46 评论 -
面试题之django缓存如何设置?(非常重要)
用户的请求通过中间件,经过一系列的认证等操作,如果请求的内容在缓存中存在,则使用FetchFromCacheMiddleware获取内容并返回给用户#当返回给用户之前,判断缓存中是否已经存在,如果不存在,则UpdateCacheMiddleware会将缓存保存至Django的缓存之中,以实现全站缓存#请求来了,是从上到下入走中间件;响应的时候是从下到上走中间件。通过Django的缓存标签实现的,缓存标签只支持两个参数timeout和key_prefix,以index.html为例实现模板缓存。...原创 2022-07-22 08:00:08 · 608 阅读 · 41 评论 -
【Django】面试题总结之django rest_framework框架中的视图都可以继承哪些类
继承APIView父类继承GenericAPIView父类注意:原创 2022-07-08 00:08:02 · 761 阅读 · 44 评论 -
【Django】RESTful API接口设计风格
它是一种web软件结构的API开发风格,注意它仅仅只是代表着一种风格,并不代表着约束、标准。尽量使⽤https协议,使⽤专属域名来提供API服务,并在URL⾥标注api版本,如下二、 URI(统⼀资源标识符)在RESTful架构中,每个⽹址代表⼀种资源(resource),这个⽹络地址就是URI(uniform resource identifier), 有时也被称为URL(uniform resource locator)。因为URI对应⼀种资源,所以⾥⾯不能有动词,只能有名词。⼀般来说,数据库中的表原创 2022-06-27 05:15:00 · 863 阅读 · 31 评论 -
django rest framework框架中用到的组件
可以提供全局认证或者在具体的视图中通过设置authentication_classes类属性来设置来设置。在继承了APIView的类视图中定义permission_classes = [permissions.IsAuthenticated]可以对接口访问的频次进行限制,以减轻服务器压力,或者实现特定的业务。对于列表数据可能需要根据字段进行过滤,我们可以通过添加django-fitlter扩展来增强支持。对于列表数据,REST framework提供了OrderingFilter过滤器来帮助我们快速指明数据原创 2022-06-26 09:43:34 · 595 阅读 · 18 评论 -
【django】模板继承
一、模板继承模板继承和类的继承含义是⼀样的,主要是为了提⾼代码重⽤,减轻开发⼈员的⼯作量。父模板的创建a、项目工程目录下,创建templates目录,作为父模板,b、在配置settings.py文件中配置模板,os.path.join(BASE_DIR,‘templates’)c、在父模板下创建子应用film/index.html文件d、编辑文件子模版的创建a、在子应用film中创建子模版templatesb、在templates下创建login.html文件c、编辑文件1、⽗模板原创 2022-04-21 06:37:25 · 1366 阅读 · 0 评论 -
【django】django中使用jinja2模板
1、jinja2介绍Jinja2:是 Python 下⼀个被⼴泛应⽤的模板引擎,是由Python实现的模板语⾔,他的设计思想来源于 Django 的模板引擎,并扩展了其语法和⼀系列强⼤的功能,尤其是Flask框架内置的模板语⾔由于django默认模板引擎功能不⻬全,速度慢,所以我们也可以在Django中使⽤jinja2, jinja2宣称⽐django默认模板引擎快10-20倍。Django主流的第三⽅APP基本上也都同时⽀持Django默认模板及jinja2,所以要⽤jinja2也不会有多少障碍。原创 2022-04-20 06:41:32 · 3421 阅读 · 5 评论 -
【django】过滤器和自定义过滤器
一、过滤器语法语法如下:使⽤管道符号 | 来应⽤过滤器,⽤于进⾏计算、转换操作,可以使⽤在变量、标签中。如果过滤器需要参数,则使⽤冒号:传递参数。变量 | 过滤器:参数列举⼏个如下:safe,禁⽤转义,告诉模板这个变量是安全的,可以解释执⾏length,⻓度,返回字符串包含字符的个数,或列表、元组、字典的元素个数。default,默认值,如果变量不存在时则返回默认值。data | default:‘默认值’。date,⽇期,⽤于对⽇期类型的值进⾏字符串格式化。常⽤的格式化字符原创 2022-04-19 06:43:49 · 1082 阅读 · 8 评论 -
【django】django使用自带模板
1、配置在⼯程中创建模板⽬录templates。在settings.py配置⽂件中修改TEMPLATES配置项的DIRS值:TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR,'templates')], 'APP_DIRS': True, 'OPTIONS': {原创 2022-04-18 06:10:53 · 701 阅读 · 8 评论 -
【django】settings.py配置文件内容详细介绍
配置文件如下"""Django settings for film1_manager project.Generated by 'django-admin startproject' using Django 2.2.For more information on this file, seehttps://docs.djangoproject.com/en/2.2/topics/settings/For the full list of settings and their values原创 2022-04-15 09:24:34 · 1264 阅读 · 2 评论 -
【django】shell工具的使用
在终端Terminal中窗口中输入python manage.py shellDjango的manage.py工具提供了shell工具,帮助我们配置好当前工程的运行环境(如连接好数据库等),以便可以直接在终端中执行测试python语句。操作如下:...原创 2022-04-14 06:43:27 · 378 阅读 · 6 评论 -
【django】如何搭建虚拟环境(解决mkvirtualenv:未找到命令)
安装虚拟环境的命令 :pip3.8 install virtualenvpip3.8 install virtualenvwrapper安装完虚拟环境后,如果提示找不到mkvirtualenv命令:解决⽅法:方法1一:# 1.创建⽬录⽤来存放虚拟环境zhilong@zhilong-virtual-machine:~$ mkdir .virtualenvs# 2.运⾏下⾯语句zhilong@zhilong-virtual-machine:~$ source ~/.bashrc⽅法二:原创 2022-01-05 09:12:10 · 1188 阅读 · 0 评论 -
关于LookupError: No installed app with label ‘admin‘.报错的解决
LookupError: No installed app with label ‘admin’.报错原因:在INSTALLED_APPS中没有找到admin应用我的项目目录解决:需要将apps加入到导包路径中之后python manage.py runserver 成功了。原创 2021-12-29 07:00:00 · 3295 阅读 · 0 评论 -
【django】类视图
以函数的⽅式定义的视图称为函数视图,函数视图便于理解。但是遇到⼀个视图对应的路径提供了多种不同HTTP请求⽅式的⽀持时,便需要在⼀个函数中编写不同的业务逻辑,代码可读性与复⽤性都不佳。一、类视图使⽤在Django中也可以使⽤类来定义⼀个视图,称为类视图。使⽤类视图可以将视图对应的不同请求⽅式以类中的不同⽅法来区别定义。如下所示主路由:urlpatterns = [ path('admin/', admin.site.urls), path('film/',include('film原创 2021-12-24 07:00:00 · 881 阅读 · 0 评论 -
【django】全局上下文(更新)
全局上下⽂是整站共享的上下⽂数据。一、实现步骤1、 在应⽤包下创建xxx.py⽂件2、 编辑xxx.py⽂件def getsname(request): return {'sname':'zilv'}3、配置⽂件中添加⾃定义全局上下⽂TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DI原创 2021-12-23 07:00:00 · 737 阅读 · 0 评论 -
【django】自定义中间件
一. ⾃定义中间件1、Django中的中间件是⼀个轻量级、底层的插件系统,可以介⼊Django的请求和响应处理过程,修改Django的输⼊或输出。中间件的设计为开发者提供了⼀种⽆侵⼊式的开发⽅式,增强了Django框架的健壮性。2、我们可以使⽤中间件,在Django处理视图的不同阶段对输⼊或输出进⾏⼲预。二. 实现步骤1、项⽬根⽬录下创建python package2、⾃定义⼀个python⽂件from django.utils.deprecation import MiddlewareMi.原创 2021-12-23 07:00:00 · 1464 阅读 · 0 评论 -
【django】HttpResponse和JsonResponse区别
视图在接收请求并处理后,必须返回HttpResponse对象或⼦对象。HttpRequest对象由Django创建,HttpResponse对象由开发⼈员创建。一、HttpResponse可以使⽤django.http.HttpResponse来构造响应对象。HttpResponse(content=响应体, content_type=响应体数据类型, status=状态码)也可通过HttpResponse对象属性来设置响应体、响应体数据类型、状态码:content:表示返回的内容。statu原创 2021-12-22 07:00:00 · 439 阅读 · 0 评论 -
【django】HttpRequest对象(更新)
回想⼀下,利⽤HTTP协议向服务器传参有⼏种途径?a、提取URL的特定部分,如/film/zhangsan/20/,可以在服务器端的路由中⽤正则表达式截取;b、查询字符串(query string),形如key1=value1&key2=value2;c、请求体(body)中发送的数据,⽐如表单数据、json、xml;d、在http报⽂的头(header)中。一. URL路径参数1、如果想从URL中获取值,需要在正则表达式中使⽤分组,2、获取值分为两种⽅式2.1、位置参数a、参数的原创 2021-12-22 07:00:00 · 1065 阅读 · 0 评论 -
【django】路由传递参数的几种方式(更新)
第一种传参:子路由:from django.urls import pathfrom film import viewsurlpatterns = [ path('<int:fid>/filmdetail/',views.filmDetail), ]视图:def filmDetail(request,fid): return HttpResponse(fid) 浏览器地址栏访问:http://127.0.0.1:8000/film/1001/filmdetail/原创 2021-12-21 07:00:00 · 1787 阅读 · 0 评论 -
【django】路由命名和路由反向解析(更新)
在 Django 项⽬中,⼀个常⻅需求是获取最终形式的 URL,⽐如⽤于嵌⼊⽣成的内容中(视图和资源⽹址,给⽤户展示⽹址等)或⽤户服务器端的导航处理(重定向等)。强烈建议不要硬编码 URL(这是⼀个费⼒、不能扩展、容易出错的主意)。同样危险的是设计临时机制来⽣成的 URL 与URLconf描述的设计的URL⼀样,这会导致URL 随着时间的推移变得过时。换句话说,需要的是 DRY 机制。除其他优势外,它还允许 URL 设计⾃动更新,⽽不必遍历所有项⽬代码来搜索和替换过时的 URL 。Django 提供执原创 2021-12-21 07:00:00 · 620 阅读 · 0 评论 -
【django】解决关于RuntimeError: ‘cryptography‘ package is required for sha256_password or caching...问题
描述:当启动项目的时候:python manage.py runserver控制台报错:RuntimeError: ‘cryptography’ package is required for sha256_password or caching_sha2_password auth methods解决方法:pip install cryptography。然后重新启动项目就ok了...原创 2021-12-20 15:02:51 · 1689 阅读 · 0 评论 -
【django】查询集QuerySet
一、概念Django的ORM中存在 查询集 的概念。查询集,也称查询结果集、QuerySet,表示从数据库中获取的对象集合。当调⽤如下过滤器⽅法时,Django会返回查询集(⽽不是简单的列表):all():返回所有数据。filter():返回满⾜条件的数据。exclude():返回满⾜条件之外的数据。order_by():对结果进⾏排序。对查询集可以再次调⽤过滤器进⾏过滤,如FilmInfo.objects.filter(fid__gt=2).order_by('pub_date')&l原创 2021-12-20 07:00:00 · 630 阅读 · 1 评论 -
【django】关联查询
一、关联查询1、查询影⽚编号为2的所有⼈物信息由⼀到多的访问语法:对应的模型类对象.对应的模型类名⼩写_set f1=FilmInfo.objects.get(fid=2)f1.peopleinfo_set.all()<QuerySet [<PeopleInfo: 吴京>, <PeopleInfo: 谢霆锋>]>2、查询⼈物编号为1的影⽚信息由多到⼀的访问语法:多对应的模型类对象.多对应的模型类中的关系类属性名p=PeopleInfo.objects原创 2021-12-20 07:00:00 · 1362 阅读 · 0 评论 -
【django】配置URLconf
用户通过在浏览器的地址栏中输⼊⽹址请求⽹站;对于Django开发的⽹站,都是通过匹配路由找到相应视图来处理⽤户的请求。一、配置URLconf1、setting.py文件中a、指定根路由位置ROOT_URLCONF = ‘项⽬⼯程同名⽬录.urls’2、编辑项目中的urls.py文件(根路由)匹配成功后,include到子应用的urls.py文件中寻址(子路由)re_path(正则,include('子应用.urls'))3、创建子应用中的urls.py文件(子路由)匹配成功后,调用vie原创 2021-12-19 07:00:00 · 1428 阅读 · 0 评论 -
【django】 F 和 Q 对象
一、 F对象之前的查询都是对象的属性与常量值⽐较,两个属性怎么⽐较呢? 答:使⽤F对象,被定义在django.db.models中。语法如下:F(属性名)1、例:查询播放量⼤于等于评论量的影⽚。from django.db.models import FFilmInfo.objects.filter(playcount__gt=F('commentcount'))<QuerySet [<FilmInfo: 金刚狼>, <FilmInfo: 夺冠>, <Fil原创 2021-12-19 07:00:00 · 508 阅读 · 0 评论 -
【django】聚合函数和排序函数(已更新)
一、 聚合函数使⽤aggregate()过滤器调⽤聚合函数。聚合函数包括:Avg平均,Count数量,Max最⼤,Min最⼩,Sum求和,被定义在django.db.models中。1、例:查询影⽚的总播放量。from django.db.models import Sum,Avg,Count,Max,MinFilmInfo.objects.aggregate(Sum('playcount')){'playcount__sum': 200420}注意: aggregate 的返回值是⼀个字典类原创 2021-12-18 07:00:00 · 888 阅读 · 0 评论 -
【django】基础条件查询(一)(已更新)
一. 基本查询get查询单⼀结果,如果不存在会抛出模型类.DoesNotExist异常。all查询多个结果。count查询结果数量。原创 2021-12-18 07:00:00 · 1007 阅读 · 0 评论 -
【django】数据库操作-增 删 改(已更新)
一、增加数据增加数据有两种⽅法。1)save通过创建模型类对象,执⾏对象的save()⽅法保存到数据库中。f1=FilmInfo(fname='我爱你中国',pub_data='2021-10-01')f1.save()2)create通过模型类.objects.create()保存。FilmInfo.objects.create(fname='我爱你china',pub_data='2021-10-12')<FilmInfo: 我爱你china>注意:每次更新了mo原创 2021-12-17 07:00:00 · 607 阅读 · 1 评论 -
【django】创建模型类(已更新)
一、创建模型类模型类创建在应用目录/models.py文件中。模型类必须继承Model类,位于包django.db.models中。接下来首先以“影片-人物”管理为例进行演示1 定义 在models.py ⽂件中定义模型类。# 创建影片模型类class FilmInfo(models.Model): fid = models.AutoField(primary_key=True, verbose_name='影片编号') fname = models.CharField(max_原创 2021-12-17 07:00:00 · 2187 阅读 · 0 评论