03 2022 档案
摘要:class Pagination(object): def __init__(self, current_page, all_count, per_page_num=2, pager_count=11): """ 封装分页相关数据 :param current_page: 当前页 :param al
阅读全文
摘要:Auth模块 什么是auth模块? Auth模块是Django自带的用户认证模块: 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统。此时我们需要实现包括用户注册、用户登录、用户认证、注销、修改密码等功能,这些功能几乎是所有软件都需要开发的功能,那么我们之前在写这些功能的时候也是需要花
阅读全文
摘要:字符串导入模块importlib # 模块:importlib import importlib res = 'myfile.b' ret = importlib.import_module(res) # 相当于:from myfile import b # 该方法最小只能到py文件名 print(
阅读全文
摘要:csrf跨站请求伪造 CSRF(Cross Site Request Forgery) 跨站请求伪造。也被称为One Click Attack和Session Riding,通常缩写为CSRF或XSRF。如果从名字你还不不知道它表示什么,你可以这样理解:攻击者(黑客,钓鱼网站)盗用了你的身份,以你的
阅读全文
摘要:Django中间件 什么是Django中间件? Django中间件相当于Django得门户: 1.请求来的时候需要先经过中间件才能到达真正的django后端 (浏览器给后端发送请求必须经过中间件) 2.响应走的时候最后也需要经过中间件才能发送出去 (后端给浏览器返回数据的时候也需要经过中间件) #
阅读全文
摘要:Faker 安装 pip install Faker 基本使用 from faker import Faker #创建对象,默认生成的数据为为英文,使用zh_CN指定为中文 fake = Faker('zh_CN') print(fake.name())#随机生成姓名 print(fake.addr
阅读全文
摘要:cookie与session的由来: 网址的发展史: 1、起初网站都没有保存用户功能的需求,所有用户访问返回的结果都是一样的。 比如:新闻网页,博客网页,小说... (这些网页是不需要登录后才能访问的,每个人访问的结果都一样) 2、后来出现了一些需要保存用户信息的网站 比如:支付宝,淘宝,京东...
阅读全文
摘要:form组件: 前戏: # 我们先来实现一个注册功能来引出什么是form组件 需求:获取用户名和密码: 利用form表单提交数据 在后端判断用户名和密码是否符合一定的格式条件 格式条件: 用户名不能有特殊符号 密码不能少于六位... # 如果不符合条件需要将提示信息展示到前端页面 这要怎么实现呢?
阅读全文
摘要:批量插入 # 需求:我们要循环插入100条数据到数据库中,并将数据返回到前端页面。 准备工作: urls.py from app01 import views urlpatterns = [ url(r'^pl_del/',views.pl_del) ] views.py from app01 im
阅读全文
摘要:django自带的序列化组件serialize 引子: # 前后端分离的项目 作为后端开发的我们只需要写代码将数据处理好 能够序列化返回给前端即可 再写一个接口文档 告诉前端每个字段代表的意思即可 前端对数据做处理也是比较麻烦的。 # 所以我们在写前后端分离项目的时候,要想让前端页面也能够识别到后端
阅读全文
摘要:前后端传输数据的编码格式(contentType) 数据传递转码: 数据在传输的过程中,浏览器会对数据进行编码,假如我现在有一条数据 {"name": "gary"},如果我们通过 get 方法传递数据,这条数据会被拼接到 url 请求的后面,如:localhost:8080/src/text.ht
阅读全文
摘要:Ajax Ajax简介: Asynchronous JavaScript + XML(异步JavaScript和XML), 其本身不是一种新技术,而是一个在 2005年被Jesse James Garrett提出的新术语,用来描述一种使用现有技术集合的‘新’方法,包括: HTML 或 XHTML,
阅读全文
摘要:模板语法传值 # 基本语法传值研究: # 模板语法的格式: {{ }} :跟变量相关的时候使用 {% %} :跟逻辑相关的时候使用 # 研究函数: def func(): print('无参函数') return '无参函数返回值' def func1(xx): print('有参函数') retu
阅读全文
摘要:多对多三种创建方式 全自动: # 利用orm自动帮我们创建第三张表关系。 class Book(models.Model): title = models.CharField(max_length=32) authors = models.ManyToManyField(to='Authors')
阅读全文
摘要:choices参数(数据库字段设计) # 在数据库字段设计阶段,只要某个字段的可能性是可以列举完全的,那么一般情况下都会采用choices参数 # 什么是可以列举完全的呢? 答 :就是一个数据的结果就是定数, 比如:数据的结果为性别(男/女) 数据的结果为学历(小学,高中,大学,研究生,博士,等等)
阅读全文
摘要:数据库查询优化 引子: 准备工作: settings.py添加该配置参数: # 只要操作数据库那么就会打印sql语句 LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'handlers': { 'console':{ 'lev
阅读全文
摘要:** Django处理给你提供了很多字段类型之外,还支持我们自定义字段** 自定义char类型字段: # 在使用字符字段:(CharField()类型定义时,它相当于定义的是varchar()类型,现在我们来自定义一个char()类型的字段) # 要想定义字段的话,我们来模仿一下内置的字段是怎么写的
阅读全文
摘要:ORM常用字段及参数 AutoField(Field) - int自增列,必须填入参数 primary_key=True BigAutoField(AutoField) - bigint自增列,必须填入参数 primary_key=True 注:当model中如果没有自增列,则自动会创建一个列名为i
阅读全文
摘要:Django中开启事务 # 什么是事务? 事务:一般是指要做的或所做的事情,而且事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所做的所有更改都会被撤销。 # 事务的四大特性: ACID: # 原子性: 一个事务是一个不可分割的工作单位,事务中包括的操作要么都做,要么都不做
阅读全文
摘要:F与Q查询 F查询 # F查询:能够帮助我们直接获取列表中某个字段对应的数据 # 举例: 1.查询卖出数大于库存数的书籍 # 使用我们之前所学的知识来看看是否可以完成 res = models.Book.objects.filter(maichu__gt=???) # 我们可以看到我们之前在使用__
阅读全文
摘要:ORM分组查询 # 关键字:annotate() # models后面(.)什么就是按什么分组 eg:models.Book.objects.annotate() # 这里就是按照书籍表每本书来分组 示例: # 统计每本书的作者数量 res = models.Book.objects.annotat
阅读全文
摘要:多表操作前期准备 models.py class Book(models.Model): name = models.CharField(max_length=32,verbose_name='书名') price = models.DecimalField(max_digits=8,decimal
阅读全文
摘要:双下环线查询方法: 比较运算 # 关键字: 大于: __gt 小于: __lt 大于等于: __gte 小于等于: __lte # 举例: res = models.User.objects.filter(age__gt=20) print(res) # 年龄大于20 res1 = models.U
阅读全文
摘要:djangoORM操作 测试脚本: # 当我们只想操作django中某一个py文件内容时,那么可以不用书写前后端交互的形式来判断运行结果是否正确,我们可以直接写一个测试脚本即可。 在我们创建应用的时候,会自动创建一个tests.py文件,我们可以在这里编写测试脚本。 # 测试环境准备:去manage
阅读全文
摘要:模板的继承 准备工作: home.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="https://cdn.bootcdn.net/ajax/li
阅读全文
摘要:自定义过滤器、标签、inclusion_tag 自定义之前注意事项: 1. 在应用下创建一个名字'必须'为templatetags文件夹 2. 在该文件夹内创建'任意'名称的py文件 比如:mytag.py 3. 在该py文件内'必须'编写下面两句话 from django import templ
阅读全文
摘要:模板语法之标签 for循环 语法结构: {% for 变量名 in 待循环集 %} 循环体代码 {% endfor %} # 可直接输入for按Tab键补全for循环的语法结构 eg: {% for foo in l %} {{ foo }} {% endfor %} 关键字:forloop # f
阅读全文
摘要:模板语法之常用过滤器 # 过滤器就类似于模板语法内置的内置方法 # 基本语法: {{数据|过滤器:参数}} # 将数据交给过滤器去做处理,数据相当于过滤器的第一个参数,:冒号后编写的相当于第二个参数。 1.统计长度 :{{ x|length }} # 统计长度 2.默认值 :{{ x|default
阅读全文
摘要:模板语法传值 # 模板语法的格式: {{ }} :跟变量相关的时候使用 {% %} :跟逻辑相关的时候使用 基本语法传值研究: 研究函数: def func(): print('无参函数') return '无参函数返回值' def func1(xx): print('有参函数') return '
阅读全文
摘要:FBV与CBV # 针对于视图函数(views.py),视图函数编写逻辑既可以使用函数(FBV)也可以使用类(CBV)来编写。 区别展示: login.html <h1>GET请求</h1> <form action="" method="post" enctype="multipart/form-
阅读全文
摘要:request对象方法 request.method # 获取请求方式 request.POST # 获取普通键值对形式的普通文件 request.GET # 获取GET请求数据 request.FILES # 获取文件数据 request.path # 只能获取路由 request.get_ful
阅读全文
摘要:form表单上传文件数据 补充: # form表单上传文件类型的数据注意事项: method必须指定成post enctype必须换为:multipart/form-data 准备: urls.py urlpatterns = [ url(r'^ab_file/',views.ab_file) ]
阅读全文
摘要:JsonResponse对象 作用:序列化成json格式的数据 json格式的数据有什么作用: 前后端数据交互需要使用用到json作为过渡,实现跨语言传输数据 # 补充: 前端序列化: JSON.stringify() JSON.parse() 后端序列化: json.dumps() json.lo
阅读全文
摘要:CBV源码剖析 准备工作:做一个简单的CBV来研究路由层(urls.py)到底是怎么触发视图层(views.py)的'类'方法的。 views.py视图层 from django.views import View class MyLogin(View): def get(self,request)
阅读全文
摘要:Django三板斧介绍 1.HttpResponse # 返回字符串类型 eg : return HttpResponse('返回字符串') # 将字符串形式放到页面上显示 2.render # 返回html页面 并且在返回给浏览器之前还可以给html文件传值 eg : return render(
阅读全文
摘要:django版本区别 区别一: django1.x路由层使用的是url方法 而在django2.x 和 3.x 版本中路由层使用的时path方法 url()第一个参数支持正则 path()第一个参数时不支持正则的,写什么就匹配什么(精准匹配) # 如果你习惯使用正则那么也给你提供了另外一个方法: f
阅读全文
摘要:虚拟环境 # 在正常开发中,我们会给每一个项目配备一个该项目独有的解释器环境(虚拟环境) # 如下图:我们在练习阶段,在不同的学习阶段我们都会使用到不同的模块,所有会下载很多模块,这样我们到后期写项目的时候之前的一些模块完全就用不到,所以我们到了真正的实际工作中,就要用到虚拟环境 该环境内只有该项目
阅读全文
摘要:伪静态 概念: 静态文件:数据是写死,永远不会修改,万年不变。 伪静态:将一个动态页面伪装成静态页面 # 为什么要伪装? 伪装的目的在于增大本网站的seo查询力度 并且增加搜索引擎收藏本网站的概率:如果搜索引擎发现是一个静态网页,说明这个页面不会再修改了,那么搜索引擎就会把这个网站收录起来,如果有用
阅读全文
摘要:路由分发 django每一个应用都可以拥有自己的templates文件夹 urls.py static文件夹 基于这个特点:django能够非常好的做到分组开发(每个人只写自己的app) 作为组长:只需要将手下书写的app全部拷贝到一个新的django项目中,然后再配置文件里面注册所有的app再利用
阅读全文
摘要:反向解析 # 通过一些方法得到一个结果,该结果可以直接访问对应的url触发视图函数 模拟演示: urls.py urlpatterns = [ url(r'^$',views.home), # 首页 url(r'^func/',views.func) # 路由后缀func ] views.py de
阅读全文
摘要:##路由层urls.py 路由匹配 第一个问题: url方法第一个参数是正则表达式 # 只要第一个参数正则表达式能够匹配到内容,那么就会立刻停止往下匹配,直接执行对应的视图函数 eg:url(r'test',views.test) url(r'testadd',views.testadd) # 通过
阅读全文