下面我们就以xlwt为例,来演示如何在Django项目中导出Excel报表,例如导出一个包含所有老师信息的Excel表格。...具体的做法是后端通过提供数据接口返回统计图表所需的数据,前端使用ECharts来渲染出柱状图、折线图、饼图、散点图等图表。例如我们要生成一个统计所有老师好评数和差评数的报表,可以按照下面的方式来做。...最后配置的日志记录器是用来真正输出日志的,Django框架提供了如下所示的内置记录器: django - 在Django层次结构中的所有消息记录器 django.request - 与请求处理相关的日志消息...每条SQL执行都会有较大的开销而且会给数据库服务器带来压力,如果能够在一条SQL中完成老师和学科的查询肯定是更好的做法,这一点也很容易做到,相信大家已经想到怎么做了。...是的,我们可以使用连接查询,但是在使用Django的ORM框架时如何做到这一点呢?
思路整理 在 django 中使用 ajax 其实就是在前端代码中(一般是 js 中)使用 ajax 调用 django 的接口,然后去更新指定的页面部分。...django + ajax 实战 在整理思路的时候我们按照上面的顺序来模拟的是用户的行为,而写代码的时候我们是作为服务端的,所以应该把步骤反过来写,也即是先写一个提供接口的函数。.../$', docker_search_view, name='docker_search'), #docker镜像查询 ajax 函数使用 django 后端接口已经提供了,现在开始在前端代码中实现接口调用的方法...添加了缓存之后,在同一段时间内重复查询相同的镜像,会发现结果可以秒刷,再也不用等待了,用户体验也变得非常好。...在 Django 提供接口给 ajax 的时候最好做到严格按照不同的返回码返回不同的信息 ajax 在请求接口完成之后,可以根据返回码的判断来执行不同的事件 比较耗时的请求可以使用缓存 版权声明:如无特殊说明
第一种方法是从整个查询集生成统计值。比如,你想要计算所有在售书的平均价钱。Django的查询语法提供了一种方式描述所有图书的集合。...当annotate()子句被指定之后,QuerySet中的每个对象都会被注上特定的值。 这些注解的语法都和aggregate()子句所使用的相同。...作用于普通模型字段的任何 filter()(或 exclude()) 都会对聚合涉及的对象进行限制。 使用annotate() 子句时,过滤器有限制注解对象的作用。...不是在原始的 QuerySet返回结果中对每个对象中添加注解,而是根据定义在values() 子句中的字段组合对先结果进行唯一的分组,再根据每个分组算出注解值, 这个注解值是根据分组中所有的成员计算而得的...但是上面那样做是行不通的。这是因为默认排序项中的 name也是一个分组项,所以这个查询会根据非重复的 (data, name) 进行分组,而这并不是你本来想要的结果。
在Django模板中,竖线(|)表示模板过滤器——对模板变量的值 进行修改的函数。过滤器date: 'M d, Y H:i'以这样的格式显示时间戳:January 1, 2015 23:00。...如果你刷新显示所有主题的页面,再单击其中的一个主题,将看到类似于图18-5所示的页面。 18.5 小结 在本章中,你首先学习了如何使用Django框架来创建Web应用程序。...你学习了数据库,以及在你修改模型后, Django可为你迁移数据库提供什么样的帮助。你学习了如何创建可访问管理网站的超级用户,并 使用管理网站输入了一些初始数据。...用于添加主题的表单 让用户输入并提交信息的页面都是表单,那怕它看起来不像表单。用户输入信息时,我们需 要进行验证,确认提供的信息是正确的数据类型,且不是恶意的信息,如中断服务器的代码。...在Django中,创建表单的最简单方式是使用ModelForm,它根据我们在第18章定义的模型中 的信息自动创建表单。
返回latest操作所使用的查询集 else: # 返回其他操作所使用的查询集 2.路由Router(urls文件中使用) 作用:(重点) 配合视图集进行使用,动态生成视图集中处理函数的...3.案例 写一个视图集,提供一下两个接口 1.获取所有的图书信息 GET/books/list 2.获取指定的图书信息 GET/books/(?...在执行视图的dispatch()方法前,会先进行视图访问权限的判断 在通过get_object()获取具体对象时,会进行对象访问权限的判断 DRF框架提供了四个权限控制类: AllowAny允许所有用户...',) } 在视图中添加filter_fields属性,指定可以过滤的字段 需求:写一个类视图,提供1个接口 1.获取所有的图书信息 GET/books/ class BookListView(ListAPIView...8.1使用方法: 在类视图中设置filter_backends,使用 rest_framework.filters.OrderingFilter过滤器,REST framework会在请求的查询字符串参数中检查是否包含了
执行查询 一旦你建立好数据模型之后,django会自动生成一套数据库抽象的API,可以让你执行增删改查的操作。这篇文档阐述了如何使用这些API。关于所有模型检索选项的详细内容,请见数据模型参考。...它可以含有零个、一个或者多个过滤器,过滤器根据所给的参数限制查询结果的范围。在sql的角度,QuerySet和SELECT命令等价,过滤器是像WHERE和LIMIT一样的限制子句。...过滤后的结果集是独立的 每次你筛选一个结果集,得到的都是全新的另一个结果集,它和之前的结果集之间没有任何绑定关系。每次筛选都会创建一个独立的结果集,可以被存储及反复使用。...跨关系查询 Django 提供了一种直观而高效的方式在查询(lookups)中表示关联关系,它能自动确认 SQL JOIN 联系。...和你定义正向关联所用的方式一样,类的实例也可以赋予逆向关联方系: e.entrydetail = ed 关系中的反向连接是如何做到的? 其他对象关系的映射(ORM)需要你在关联双方都定义关系。
常用的级别如下: DEBUG:排查故障时使用的低级别系统信息,通常开发时使用 INFO:一般的系统信息,并不算问题 WARNING:描述系统发生小问题的信息,但通常不影响功能 ERROR:描述系统发生大问题的信息...这样就可以根据消息的重要性不同,来提供不同类型的输出。...Filters Filter 即过滤器。在日志记录从 Logger 传到 Handler 的过程中,使用 Filter 来做额外的控制。例如,只允许某个特定来源的 ERROR 消息输出。...当 formatter 配置 %(lineno)d 时,每次并不是显示实际的报错行,而是显示日志类中的代码行,但这样显示就失去意义了,所以也就没有配置,用了 %(name)s 来展示实际的调用文件。...具体记录哪些字段可以根据项目需要进行获取和配置。
一、传统方式 前后端分离通过Restful API进行数据交互时,如何验证用户的登录信息及权限。...在原来的项目中,使用的是最传统也是最简单的方式,前端登录,后端根据用户信息生成一个token,并保存这个token 和对应的用户id到数据库或Session中,接着把token 传给用户,存入浏览器 cookie...,之后浏览器请求带上这个cookie,后端根据这个cookie值来查询用户,验证是否过期。...另外,如果将验证信息保存在数据库中,后端每次都需要根据token查出用户id,这就增加了数据库的查询和存储开销。若把验证信息保存在session中,有加大了服务器端的存储压力。...私有的声明: 私有声明是提供者和消费者所共同定义的声明,一般不建议存放敏感信息,因为base64是对称解密的,意味着该部分信息可以归类为明文信息 { "iss": "lion1ou JWT",
将所有的精力放在你主要的事情上,对于一些琐事、一些惹恼的小人,一些阻碍你前进的事物,不妨看淡一点,暂时的妥协并不是向他们低头,而是跟本没把他们放在心上。...我们设置了前端开发服务器,所以每次使用的时候一定要记得打开:(在静态文件目录下执行下面的命令) live-server f....,DRF框架会自动对异常进行处理,并且会把处理之后的错误信息返回给客户端。...数据库查询 属性: queryset(指定视图所使用的查询集) 方法: get_queryset返回视图所使用的查询集 get_object从视图所使用的查询集中查询指定的对象,默认根据pk进行查询。...返回latest操作使用的查询集 else: # 返回其他操作所使用的查询集 5.6.6路由Router 作用 配合视图集进行使用,动态生成视图集中处理函数的url配置项。
verbose,输出日志级别名称、日志信息,以及生成日志信息的时间、进程、线程和模块。 定义两个过滤器: project.logging.SpecialFilter,使用别名 special。...如果这个过滤器需要额外的参数,它们可以作为过滤器配置字典中的附加键提供。在这种情况下,当实例化 SpecialFilter 时,参数 foo 将被赋予一个 bar 的值。...‘filename’ 指向的路径改为当前运行 Django 应用的用户可写的路径 配置三个记录器。 django,将所有信息传递给 console 处理程序。...最后配置的日志记录器是用来真正输出日志的,Django框架提供了如下所示的内置记录器: django - 在Django层次结构中的所有消息记录器 django.request - 与请求处理相关的日志消息...执行Teacher.objects.all()之后我们可以注意到,在控制台看到的或者通过Django-Debug-Toolbar输出的SQL是下面这样的: 这里的问题通常被称为“1+N查询”(有的地方也将其称之为
> 三 过滤器 在Django的模板语言中,通过使用 过滤器 来改变变量的显示。 ...比如使用逗号和空格去连接一个列表中的元素,如:{{ list|join:', ' }} '|'左右没有空格没有空格没有空格 Django的模板语言中提供了大约六十个内置过滤器。...safe Django的模板中在进行模板渲染的时候会对HTML标签和JS等语法标签进行自动转义,原因显而易见,这样是为了安全,django担心这是用户添加的数据,比如如果有人给你评论的时候写了一段...标签比变量更加复杂:一些在输出中创建文本,一些通过循环或逻辑来控制流程,一些加载其后的变量将使用到的额外信息到模版中。...六 组件 可以将常用的页面内容如导航条,页尾信息等组件保存在单独的文件中,然后在需要使用的地方,文件的任意位置按如下语法导入即可。
利用这种方式,可以根据消息的重要性提供不同形式的处理。...Django 中这样的日志信息不多。可以设置环境变量DJANGO_LOG_LEVEL=DEBUG 来看看Django 的debug 日志,它包含所有的数据库查询所以非常详尽。...如果filter 在构造时要求额外的参数,可以在filter 的配置字段中用额外的键提供。在这个例子中,在实例化SpecialFilter 时,foo 参数的值将使用bar。...这里的日志不包含框架级别的的初始化(例如,SET TIMEZONE)和事务管理查询(例如,BEGIN、COMMIT 和ROLLBACK)。如果你希望看到所有的数据库查询,可以打开数据库中的查询日志。...若要自定它的行为,可以子类化AdminEmailHandler 类并覆盖这个方法。 Filters 在Python logging 模块提供的过滤器的基础之上,Django 还提供两个过滤器。
Python3.9.12,游戏逻辑由 H5 引擎 Phaser3 开发,后端用 Django 作为服务器提供 Web 服务如下图所示,由于“游戏”本身并不存在用户操作,所以 H5 的页面仅供展示使用;...Main Loop 即驱动 Agents 做出决策的主循环,以时间为 step,通过用户命令行输入的 step 来决定进行多少步的运算(注意:这里前端并不是实时同步展示运算结果的),并将运算的结果发给...tile(或者说每一个坐标),都会包含这些信息> 世界 World -> 区域 Sector -> 场所 Arenas -> 物品 Game Objects而Maze类除了创建这样的一个数据结构之外,还提供部分常用方法...reflect的流程描述,其中的步骤2和4都存在对GPT的调用图片整体来说,项目中对于GPT的调用都是基于精确设定并且格式化的prompt,对于输出的格式要求也很严格,而且并不是一次性将所有的信息都告诉大模型...,每次的提问都只解决一个比较小的问题:比如这个小时做什么、接下来的对话主题是什么,如何搜集、整理大模型所需要的上下文,实际还是hard code的,这一点可能并不那么理想---收获与问题收获这个项目展示了构建
在脚本中如何进行Django的运行 if __name__ == '__main__': import os import django # 注意路径(当前所在的位置,要加载Django...修改访问表单数据使用的编码, 接下来对属性的任何访问将使用新的encoding值 FILES:一个类似于字典的对象,包含所有的上传文件...配置 在settings.py中保存了数据库的连接配置信息,Django默认初始配置使用sqlite数据库。...过滤器基于所给的参数限制查询的结果 从SQL的角度讲,查询集与select语句等价,过滤器像where、limit、order by子句。...我们在通过模型类的objects属性提供的方法操作数据库时, 即是在使用一个管理器对象objects。
每次next()被调用时,生成器会返回它脱离的位置(它记忆语句最后一次执行的位置和所有的数据值) 区别:生成器能做到迭代器能做的所有事,而且因为自动创建了__iter__()和next()方法,生成器显得特别简洁...linux下的后台进程管理利器 supervisor 每次文件修改后再linux执行 service supervisord restart 7、如何提高python的运行效率 使用生成器;关键代码使用外部功能包...相比来讲,支持的并发量更高,方便管理多进程,发挥多核的优势,提升性能。 你是最棒的! 网络编程和前端部分 1.AJAX是什么,如何使用AJAX?...比如,在进行登录操作,通过GET请求,用户名和密码都会暴露再URL上,因为登录页面有可能被浏览器缓存以及其他人查看浏览器的历史记录的原因,此时的用户名和密码就很容易被他人拿到了。...有了大量代理ip后可以每请求几次更换一个ip,这在requests或者urllib2中很容易做到,这样就能很容易的绕过第一种反爬虫。 对于第二种情况,可以在每次请求后随机间隔几秒再进行下一次请求。
一、缓存穿透 缓存穿透是指缓存和数据库中都没有的数据,而用户不断发起请求,如发起id为-1的数据或者特别大的不存在的数据。有可能是黑客利用漏洞攻击从而去压垮应用的数据库。 1....常见解决方案 对于缓存穿透问题,常见的解决方案有以下三种: 验证拦截:接口层进行校验,如鉴定用户权限,对ID之类的字段做基础的校验,如id<=0的字段直接拦截; 缓存空数据:当数据库查询到的数据为空时,...首先用多个bit位去代替HashMap中的数组,这样的话储存空间就下来了,之后就是对 Key 进行多次哈希,将 Key 哈希后的值所对应的 bit 位置为1。...缓存空数据与布隆过滤器的比较 上面对这两种方案都进行了简单的介绍,缓存空数据与布隆过滤器都能有效解决缓存穿透问题,但使用场景有着些许不同; 当一些恶意攻击查询查询的key各不相同,而且数量巨多,此时缓存空数据不是一个好的解决方案...因为缓存刚过期,所有并发请求都会到数据库中查询数据。 解决方案 将热点数据设置为永不过期; 加互斥锁:互斥锁可以控制查询数据库的线程访问,但这种方案会导致系统的吞吐量下降,需要根据实际情况使用。
每次bad_mojo激活该条件时,都会写入一个错误日志记录。...为了配置日志记录,您可以使用LOGGING定义日志记录设置的字典。这些设置描述了您希望在日志记录设置中使用的日志记录器,处理程序,过滤器和格式化程序,以及希望这些组件具有的日志级别和其他属性。...': False, # 允许使用已有的默认过滤器 'handlers': { # 定义一个处理器 'file': { # 定义DEBUG日志信息的存储路径...示例配置二 第二,这是一个如何使日志记录系统将Django的日志记录打印到控制台的示例。在本地开发过程中可能会很有用。...Filters 过滤器扩展 Django除了提供Python日志记录模块所提供的日志过滤器外,还提供了一些特别日志过滤器。
传统的session认证 我们知道,http协议本身是一种无状态的协议,而这就意味着如果用户向我们的应用提供了用户名和密码来进行用户认证,那么下一次请求时,用户还要再一次进行用户认证才行,因为根据http...私有的声明: 私有声明是提供者和消费者所共同定义的声明,一般不建议存放敏感信息,因为base64是对称解密的,意味着该部分信息可以归类为明文信息。...如果可以,请使用https协议 Django REST framework JWT 我们在验证完用户的身份后(校验用户名和密码),需要向用户签发JWT,在需要用到用户身份信息的时候,还需要校验用户的JWT...本次认证提供的用户账号 password 本次认证提供的密码 我们想要让管理员用户才能登录我们的admin后台,这时我们就要修改django原有的用户验证方法。...重写authenticate方法的思路: 根据username参数查找用户User对象,在查询条件中在加上is_staff=True的条件 若查找到User对象,调用User对象的check_password
点击关注州的先生 编程应用、实战教程,不容错过 Django本身附带的模板系统提供了大量的内建标签和过滤器供我们在开发的时候使用。...关于如何自定义Django模板标签和过滤器,在Django的官方文档上有比较详细的介绍,但是缺少足够清晰的实例说明,所以本篇文章将以开源文档写作应用——MrDoc的源码,来演示讲解自定义Django的模板过滤器...但是这样既需要在后端视图进行逻辑判断和数据处理,又需要在前端进行渲染,稍微有点麻烦。在这种情况下,MrDoc采用的Django自定义模板过滤器的方法,来实现上述功能。...,其接受一个值,我们将其设定为文档的ID,在函数中我们查询文档中上级文档ID为传入值的数据并返回。...这个project_docs将会传递到前端模板上,我们将加载自定义的模板标签,然后通过自定义的模板过滤器get_next_doc 获取到下一级的文档信息。其代码如下图所示: ?
接口分页效果 我们可以看到接口返回的信息还包含了前一页和后一页的 url 是不是很人性化 接口数据多条件筛选 目前我们的接口要查找特定的信息只能通过 id 来查找,这肯定是不够完善的,这部分将设置接口的多条件查询...首先我们需要安装过滤器的模块 pip install django-filter 然后我们需要将过滤器模块到 settings.py 中的 INSTALLED_APPS 进行注册才可以使用。...title="xxxxxx"&format=json 进行访问,可以得到筛选的结果。但是有个问题就是只能精确查询才可以,如果你输入的参数不完整,就查询不到,接下来,我们尝试着完成模糊查询。...字段,author 我们使用 django 自带的 User 类, # 我们通过 ForeignKey 进行关联两个 Model,related_name 为反向引用, # 即我们在...然后我们会得到一个 json 数据 {"detail": "身份认证信息未提供。"} 显然被拒绝访问了,同样我们操作 DELETE 等操作也是一样 ?
领取专属 10元无门槛券
手把手带您无忧上云