07 2023 档案

摘要:自定义视图函数test widget = forms.TextInput(attrs={'class': "form-control"}) 运行步骤 1. 初始化封装 设置默认值 封装结束 # widge.input_type = "text"# widge.template_name = "dja 阅读全文
posted @ 2023-07-29 15:40 khalil12138 阅读(37) 评论(0) 推荐(0) 编辑
摘要:昨日课后作业(Form源码分析) 问题: 当浏览器请求方式为POST,form如何封装,封装后如何进行valid校验 答案: 1. 分析 form = LoginForm2(request.POST) 这行代码其实等于 form = LoginForm2(data = request.POST) 加 阅读全文
posted @ 2023-07-29 13:26 khalil12138 阅读(5) 评论(0) 推荐(0) 编辑
摘要:1 前置知识点 1.1 render函数 可以看到render函数先拿到模板, 再进行模板渲染 那么form函数是如何自动生成表单里的input标签呢, 应该是在form里已经渲染好一遍生成了input标签放进了{"form": form}的集合 render函数再进行渲染 2 Form函数 2.1 阅读全文
posted @ 2023-07-29 11:40 khalil12138 阅读(11) 评论(0) 推荐(0) 编辑
摘要:1. 为什么使用form和modelform 1.1 不使用form时 当不用form时, 想校验浏览器发来的数据需要使用很多request.Post.get拿到信息, 再写函数进行逐个校验 1.2 使用form 不用再在视图函数内进行校验 Form功能: 数据校验, 自动生成HTML对应的标签, 阅读全文
posted @ 2023-07-25 14:09 khalil12138 阅读(22) 评论(0) 推荐(0) 编辑
摘要:setting中的SessionMiddleware必须设置 查看中间件源码 如果后面在试图函数使用 request.session = 像 SessionStore() 这个函数中传递了Cookie 如果视图函数定义了如下方法 执行clear清空_session_cache 至此process_r 阅读全文
posted @ 2023-07-24 18:50 khalil12138 阅读(21) 评论(0) 推荐(0) 编辑
摘要:如果将setting中的session引擎配置为db session app的 migtaions文件夹中已经包含makemigration数据 只需要执行python manage.py migrate命令 这时便会自动创建django_session1的表 阅读全文
posted @ 2023-07-24 16:29 khalil12138 阅读(16) 评论(0) 推荐(0) 编辑
摘要:基本配置 1. 设置session setting.py app部分 全局默认配置部分 SESSION_ENGINE = "django.contrib.sessions.backends.db"# 存储在数据库中 SESSION_ENGINE = "django.contrib.sessions. 阅读全文
posted @ 2023-07-24 15:14 khalil12138 阅读(10) 评论(0) 推荐(0) 编辑
摘要:属性: 键值对 位置: 响应头返回 使用: 阅读全文
posted @ 2023-07-23 20:40 khalil12138 阅读(7) 评论(0) 推荐(0) 编辑
摘要:前置知识点: python内置函数warp: 不会改变函数结构, 防止函数的源数据丢失,如下图inner函数还会保存get_response的元数据 __name__ __doc__ 后面的源码中就会有这样的例子, inner函数是闭包的返回函数,如果不加wrap,元数据就会被inner函数的数据取 阅读全文
posted @ 2023-07-23 00:36 khalil12138 阅读(38) 评论(0) 推荐(0) 编辑
摘要:1. 使用规范 1. 编写类 在类中定义process_request, process_view, process_response 2. 在setting中注册 2. 中间件原理 2.1 正常情况 编写:可以编写在任意目录: 自定义类 (继承) 参考django内置中间件 注册机制 动态反射加反 阅读全文
posted @ 2023-07-22 14:58 khalil12138 阅读(11) 评论(0) 推荐(0) 编辑
摘要:1. app必须注册 2. app文件夹中必须创建templatetags文件夹 阅读全文
posted @ 2023-07-21 16:45 khalil12138 阅读(14) 评论(0) 推荐(0) 编辑
摘要:include导入 include可以导入多次, extend继承只能一次 阅读全文
posted @ 2023-07-21 15:19 khalil12138 阅读(54) 评论(0) 推荐(0) 编辑
摘要:1. 寻找template html 2. 参数传递 3. 底层原理(大致) 将html 通过函数_execute() append进空列表 再通过compile函数执行_execute 阅读全文
posted @ 2023-07-21 14:51 khalil12138 阅读(28) 评论(0) 推荐(0) 编辑
摘要:1. 常见的返回类型 HttpResponse, redirect, render, JsonResponse 1.1 HttpResponse 前置知识点 content_type: 类属性设置完毕接下来到了定义的各个函数方法 后面还有set delete cookie功能等讲到再写 父类使用到的 阅读全文
posted @ 2023-07-20 10:09 khalil12138 阅读(26) 评论(0) 推荐(0) 编辑
摘要:常见问题中文显示ascci码 可以看到返回值变成了编码 阅读全文
posted @ 2023-07-19 20:14 khalil12138 阅读(14) 评论(0) 推荐(0) 编辑
摘要:request.method请求 request.get请求 request.POST请求 没写完待定 阅读全文
posted @ 2023-07-19 16:53 khalil12138 阅读(8) 评论(0) 推荐(0) 编辑
摘要:1. 简单的项目不需要路由分发,直接在根路径下的url.py编写即可 2. 路由分发 利用上期学过的在apps文件夹下创建多app https://www.cnblogs.com/khalil12138/p/17540805.html 再将路由拆分到各自app的urls.py下 阅读全文
posted @ 2023-07-19 13:38 khalil12138 阅读(9) 评论(0) 推荐(0) 编辑
摘要:知识点: 装饰器: 闭包: 返回源码as_view方法 return 就是handler加() = handler() = Userinfo.get() 现在Userinfo.get()返回什么浏览器就能接收什么 阅读全文
posted @ 2023-07-19 13:38 khalil12138 阅读(10) 评论(0) 推荐(0) 编辑
摘要:CBV 阅读全文
posted @ 2023-07-18 20:09 khalil12138 阅读(140) 评论(0) 推荐(0) 编辑
摘要:浏览器的原生请求 > 发送到django入口wsgi > 进入django对environ做进一步处理 --> 路由匹配 > (很多组件留给试图函数 ) >视图函数调用 GET / HTTP 1.1 请求会被封装成environ request = WSGIRequest(environ) reuq 阅读全文
posted @ 2023-07-18 17:47 khalil12138 阅读(9) 评论(0) 推荐(0) 编辑
摘要:如果是True, 在url.py里配置成 path("login/user/", view.user) 浏览器中输入 http://192.168.0.1:8000/login/user 回车之后会在后面自动加/ 请求方式只能是GET 不能是POST 阅读全文
posted @ 2023-07-18 17:25 khalil12138 阅读(31) 评论(0) 推荐(0) 编辑
摘要:1. 请求来了会走WSGIHandler的call方法 convert_exception_to_response也是进行封装 真的handler是从下图定义 resolver = URLResolver(RegexPattern(....)) 那么 resolver.pattern = Regex 阅读全文
posted @ 2023-07-18 15:36 khalil12138 阅读(63) 评论(0) 推荐(0) 编辑
摘要:1. 创建如下结构目录以及python文件 2. 现在在app.py 就可以 import 通过字符串导入模块 通过字符串导入模块,再通过getattr拿到成员 通过注册的底层源码分析 最后返回的就是 (app里的url, None, None) 最终形态 阅读全文
posted @ 2023-07-14 15:04 khalil12138 阅读(3) 评论(0) 推荐(0) 编辑
摘要:1. 不使用include方法 1.表象 另一种路由编写方式,不用使用include 引出namespace概念 可以看到如果使用include方法,后面可带上一个参数赋值给namespace 在无namespace时, 如果为所有以/base/开头的url添加 name='base' 这个时候访问 阅读全文
posted @ 2023-07-12 15:08 khalil12138 阅读(8) 评论(0) 推荐(0) 编辑
摘要:1. re_path 和 path 有什么区别 1. 表象上的区别 path path 里面支持固定,还有动态参数 int,str,uuid,path re_path re_path支持正则表达式 2. 源码上的区别 底层都是偏函数,对应的都是_path函数, 本质上传递的Pattern不同, 而d 阅读全文
posted @ 2023-07-12 11:14 khalil12138 阅读(11) 评论(0) 推荐(0) 编辑
摘要:1. 定义路由本质 比如在url.py定义以下路由,浏览器中输入http://192.168.0.1:8000/user/2003-04-21可以访问 意味着此url http://192.168.0.1:8000/user/2003-04-21 和url.py里的路由们做了路由匹配 如果匹配成功找 阅读全文
posted @ 2023-07-11 16:25 khalil12138 阅读(106) 评论(0) 推荐(0) 编辑
摘要:讲解: URL > 函数的对应关系 多种路由关系 1.固定关系(固定url访问固定view) 2. 非固定带变量传递 需要有参数接收发送的变量值 也可以多参数传递,view里用**kwargs接受 也可用path,会把整个路径传过来 path('database/<path:v1>', view.d 阅读全文
posted @ 2023-07-10 14:55 khalil12138 阅读(28) 评论(0) 推荐(0) 编辑
摘要:多app应用目录结构 项目单独一个app结构: 多个app: 多个app放在一个apps文件夹中, 在根目录下创建apps的文件夹 操作: 没勾选template,那么项目根目录就没有template文件夹, setting 里也没有DIRS配置 对比加了template配置,在setting文件下 阅读全文
posted @ 2023-07-10 13:14 khalil12138 阅读(50) 评论(0) 推荐(0) 编辑
摘要:问题 1 解答: makemigration和migrate相关命令, 只会帮助对表和表结构进行修改或者删除 (针对表结构级别) 不当操作会导致数据丢失 问题 2 解答: 不是的,以虚拟环境举例 如果创建一个F盘下的名字为x1 venv环境 这个pip3.9.exe只针对当前环境起作用, 下载好的p 阅读全文
posted @ 2023-07-10 11:24 khalil12138 阅读(9) 评论(0) 推荐(0) 编辑
摘要:App - 基本使用 作用主要用于业务功能模块开发 创建App > python manage.py startapp app01 创建成功后默认生成以下文件 默认文件讲解: 1. models.py和migrations文件夹以及文件 models.py 用orm代替原生SQL语句(对类和对象进行 阅读全文
posted @ 2023-07-10 10:28 khalil12138 阅读(81) 评论(1) 推荐(1) 编辑

点击右上角即可分享
微信分享提示