<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Cream_Bule的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Cream_Bule</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Cream_Bule]]></copyright><item><title><![CDATA[视图组件详解]]></title><link>https://blog.youkuaiyun.com/Cream_Bule/article/details/120120638</link><guid>https://blog.youkuaiyun.com/Cream_Bule/article/details/120120638</guid><author>Cream_Bule</author><pubDate>Sun, 05 Sep 2021 20:26:18 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[FRI.认证类]]></title><link>https://blog.youkuaiyun.com/Cream_Bule/article/details/120120547</link><guid>https://blog.youkuaiyun.com/Cream_Bule/article/details/120120547</guid><author>Cream_Bule</author><pubDate>Sun, 05 Sep 2021 20:21:16 +0800</pubDate><description><![CDATA[FRI.认证类
1 序列化类钩子函数执行位置的源码
	-反序列化的校验：字段自己的校验，局部钩子校验，全局钩子校验
    
2 drf的请求
	-Request类的对象
    	-data：put，post提交的数据都在里面
        -query_params：get请求提交的数据
        -用起来跟django的request一样用
        
    -指定可以解析的编码格式
    	-默认3种
        -局部配置和全局配置
        -优先级：视图类 --&g]]></description><category></category></item><item><title><![CDATA[THU.源码解析]]></title><link>https://blog.youkuaiyun.com/Cream_Bule/article/details/120120526</link><guid>https://blog.youkuaiyun.com/Cream_Bule/article/details/120120526</guid><author>Cream_Bule</author><pubDate>Sun, 05 Sep 2021 20:20:41 +0800</pubDate><description><![CDATA[THU.源码解析
序列化类源码分析
# 局部和全局钩子在哪执行
ser.is_valid '在进行校验之后，会保存校验信息，，因此即使进行多次校验判断也只执行一次' --&gt; BaseSerializer 的 is_valid --&gt; self._validated_data = self.run_validation(self.initial_data) --&gt; 是哪个类的 run_validation？不是 Field 类的，而是 Serializer 类的
    
    -Seri]]></description><category></category></item><item><title><![CDATA[WED.序列化类之 Serializer]]></title><link>https://blog.youkuaiyun.com/Cream_Bule/article/details/120120507</link><guid>https://blog.youkuaiyun.com/Cream_Bule/article/details/120120507</guid><author>Cream_Bule</author><pubDate>Sun, 05 Sep 2021 20:19:49 +0800</pubDate><description><![CDATA[WED.序列化类之 Serializer
类中方法和函数的区别
方法
绑定给对象的方法


内有任何装饰器


对象来调用，会自动传值，把对象当做第一个参数传进来


绑定给类的方法

类来调用，会自动传值，把类当做第一个参数传进来

函数

通过 @staticmethod 修饰的函数被称为普通函数，也被称为静态方法，有几个值，调用时就传入几个值。

注意
1、对象可以调用类的方法，且仍然会把类作为第一个参数自动传入

2、类也可以调用对象的方法，'但只作为普通函数'，不会将对象或类作为第一个参数自动传入]]></description><category></category></item><item><title><![CDATA[TUE.序列化组件的简单应用]]></title><link>https://blog.youkuaiyun.com/Cream_Bule/article/details/120120497</link><guid>https://blog.youkuaiyun.com/Cream_Bule/article/details/120120497</guid><author>Cream_Bule</author><pubDate>Sun, 05 Sep 2021 20:18:58 +0800</pubDate><description><![CDATA[TUE.序列化组件的简单应用
CBV源码分析
我们在路由中写了 IndexView.as_view() --&gt; 实际上放了一个函数内存地址，源码是 --&gt; 实际上是 view 的内存地址
    @classonlymethod
    def view(request, *args, **kwargs):
        return self.dispatch(request, *args, **kwargs)
    return view
  
当请求来了，跟路由匹配成功，就会执行 vi]]></description><category></category></item><item><title><![CDATA[MON.DRF 入门规范]]></title><link>https://blog.youkuaiyun.com/Cream_Bule/article/details/120120473</link><guid>https://blog.youkuaiyun.com/Cream_Bule/article/details/120120473</guid><author>Cream_Bule</author><pubDate>Sun, 05 Sep 2021 20:18:19 +0800</pubDate><description><![CDATA[Web 开发模式


前后端不分离 – 混合开发模式


前后端分离 – 后端开发模式


1、提高开发效率

2、降低软件设计的耦合度
		- 通过后端提供的接口，给不同类型的客户端传递数据
  
3、提高处理复杂业务的能力

API接口

通过网络，规定了前后台信息交互规则的url链接，也就是前后台信息交互的媒介

1、长得像返回数据的url链接

2、请求方式：get、post、put、patch、delete

3、请求参数：json或xml格式的key-value类型数据

4、响应结果：json]]></description><category></category></item><item><title><![CDATA[多对多表关系的三种创建方式]]></title><link>https://blog.youkuaiyun.com/Cream_Bule/article/details/120116264</link><guid>https://blog.youkuaiyun.com/Cream_Bule/article/details/120116264</guid><author>Cream_Bule</author><pubDate>Sun, 05 Sep 2021 16:02:13 +0800</pubDate><description><![CDATA[多对多关系表的三种创建方式
全自动
在我们之前创建多对多表的时候，一直用的都是全自动的方式来创建第三张关系表的
class Book(models.Model):
    title = models.CharField(max_length=32)
    price = models.DecimalField(max_digits=8, decimal_places=2)
    # 创建多对多关系字段
    authors = models.ManyToManyField(to='Author')
]]></description><category></category></item><item><title><![CDATA[“detail“: “Unsupported media type \“text/plain\“ in request.“]]></title><link>https://blog.youkuaiyun.com/Cream_Bule/article/details/120107846</link><guid>https://blog.youkuaiyun.com/Cream_Bule/article/details/120107846</guid><author>Cream_Bule</author><pubDate>Sat, 04 Sep 2021 23:52:04 +0800</pubDate><description><![CDATA[在使用 Postman 的过程中，使用 POST 请求传输数据时，Postman 反馈如下错误 "detail": "Unsupported media type \"text/plain\" in request."
这是由于在传输数据过程中格式选择错误的原因
只要将右下角的 Text 格式转换为 Json 格式即可

...]]></description><category></category></item><item><title><![CDATA[Django 2.x 版本路由视图无法匹配正则]]></title><link>https://blog.youkuaiyun.com/Cream_Bule/article/details/120006403</link><guid>https://blog.youkuaiyun.com/Cream_Bule/article/details/120006403</guid><author>Cream_Bule</author><pubDate>Mon, 30 Aug 2021 21:53:22 +0800</pubDate><description><![CDATA[在 Django 2.x 以后的版本中，将 url 改为了 path，且 path 不匹配正则，因此需要通过导入 from django.urls import re_path 使用 re_path 来达到正则匹配的目的

]]></description><category></category></item><item><title><![CDATA[关于 Ajax 与 form 表单提交冲突的问题]]></title><link>https://blog.youkuaiyun.com/Cream_Bule/article/details/119906733</link><guid>https://blog.youkuaiyun.com/Cream_Bule/article/details/119906733</guid><author>Cream_Bule</author><pubDate>Wed, 25 Aug 2021 11:09:06 +0800</pubDate><description><![CDATA[Ajax 与 form 表单在提交数据的过程中，若 form 表单指定了数据提交方式或使用 sumbit 按钮提交数据，则会与 Ajax 发生冲突，导致后端无法获取用户输入数据，进而无法返回正确结果
解决方案
1、删除 form 表单 method 参数
2、将 Submit 按钮 – &lt;input type="button" class="btn btn-success" id="btn"&gt;Submit&lt;/submit&gt;，修改为 – &lt;input type="button" ]]></description><category></category></item><item><title><![CDATA[FRI.Django 中的装饰器及 Auth 模块]]></title><link>https://blog.youkuaiyun.com/Cream_Bule/article/details/119851592</link><guid>https://blog.youkuaiyun.com/Cream_Bule/article/details/119851592</guid><author>Cream_Bule</author><pubDate>Sun, 22 Aug 2021 13:22:00 +0800</pubDate><description><![CDATA[FRI.Django 中的装饰器及 Auth 模块
CBV 装饰器
添加装饰器的三种方式
No.1 Scheme  指名道姓
from django.views import View
from django.utils.decorators import method_decorator


class MyLogin(View):
    @method_decorator(login_property)
    def get(self, request):
        return HttpRe]]></description><category></category></item><item><title><![CDATA[关于类中静态方法 @staticmethod 使用过程中的小细节]]></title><link>https://blog.youkuaiyun.com/Cream_Bule/article/details/119843214</link><guid>https://blog.youkuaiyun.com/Cream_Bule/article/details/119843214</guid><author>Cream_Bule</author><pubDate>Sat, 21 Aug 2021 18:31:12 +0800</pubDate><description><![CDATA[今天在写一个小模块的时候调用了 @staticmethod 方法，在模块编写完成后，运行代码发生了参数缺失的错误（TypeError: communicate() missing 1 required positional argument: ‘content’），代码如下




这是由于 Email 类的 communicate 方法中并没有调用类中的属性，因此在添加 @staticmethod 装饰器后不需要传入 slef 参数，只要将 self 参数删除即可

...]]></description><category></category></item><item><title><![CDATA[THU.Cookie 及 Session]]></title><link>https://blog.youkuaiyun.com/Cream_Bule/article/details/119825925</link><guid>https://blog.youkuaiyun.com/Cream_Bule/article/details/119825925</guid><author>Cream_Bule</author><pubDate>Fri, 20 Aug 2021 16:06:38 +0800</pubDate><description><![CDATA[THU.Cookie 及 Session
批量插入数据
 # for i in range(10000):
    #     models.Book.objects.create(title='%s本书' % i)
    # models.Book.objects.filter(id__gt=0).delete()

    # 批量添加
    book = []
    # for i in range(100000):
    #     book_obj = models.Book(title=]]></description><category></category></item><item><title><![CDATA[MON.神奇的双下划线及多表操作]]></title><link>https://blog.youkuaiyun.com/Cream_Bule/article/details/119740314</link><guid>https://blog.youkuaiyun.com/Cream_Bule/article/details/119740314</guid><author>Cream_Bule</author><pubDate>Mon, 16 Aug 2021 19:30:31 +0800</pubDate><description><![CDATA[MON.神奇的双下划线及多表操作
神奇的双下滑线查询
1、年龄大于 35 岁的数据
res = models.User.objects.filter(age__gt=35)

2、年龄小于 35 岁的数据
res = models.User.objects.filter(age__lt=35)

3、大于等于
res = models.User.objects.filter(age__gte=35)

4、小于等于
res = models.User.objects.filter(age__lte=35)
]]></description><category></category></item><item><title><![CDATA[FRI.模板语法及 ORM 常见操作]]></title><link>https://blog.youkuaiyun.com/Cream_Bule/article/details/119705091</link><guid>https://blog.youkuaiyun.com/Cream_Bule/article/details/119705091</guid><author>Cream_Bule</author><pubDate>Sat, 14 Aug 2021 19:25:24 +0800</pubDate><description><![CDATA[FRI.模板语法及 ORM 常见操作
模板语法 – 传值
def index(request):

    a = 123
    b = 11.11
    c = 'abcdefg'
    d = True
    e = [1, 2, 3,4 ]
    f = (5, 6, 7)
    g = {8, 9 ,10}
    h = {'name': 'egon', 'age': 18, 'k1':[1, {"hobby":'football'}]}
    # 模板中使用函数，不要加括号
   ]]></description><category></category></item><item><title><![CDATA[THU.路由介绍及 JsonResponse]]></title><link>https://blog.youkuaiyun.com/Cream_Bule/article/details/119705053</link><guid>https://blog.youkuaiyun.com/Cream_Bule/article/details/119705053</guid><author>Cream_Bule</author><pubDate>Sat, 14 Aug 2021 19:21:50 +0800</pubDate><description><![CDATA[THU.路由介绍及 JsonResponse
路由介绍
路由匹配
# 路由匹配
url(r'test', views.test),
url(r'testadd', views.testadd)

"""
url 方法第一个参数是正则表达式
		只要第一个参数正则表达式能够匹配到的内容，name 就会立刻停止往下匹配
		直接执行对应的视图函数
		
输入 url 的时候会默认加 '/'
		Django 内部会自动进行重定向
		'/' 会在进行一次匹配
"""

分组

给某一段正则表达式用小括号括起来
]]></description><category></category></item><item><title><![CDATA[CBV 源码剖析]]></title><link>https://blog.youkuaiyun.com/Cream_Bule/article/details/119705035</link><guid>https://blog.youkuaiyun.com/Cream_Bule/article/details/119705035</guid><author>Cream_Bule</author><pubDate>Sat, 14 Aug 2021 19:18:06 +0800</pubDate><description><![CDATA[FBV 和 CBV
FBV：funcation base view -- 基于函数的视图
CBV：class base view -- 基于类的视图
		1、先写一个类
  	2、继承 View
    3、url(r'^login/', views.Mylogin.as_view())

CBV 是根据请求方式区别访问哪个方法

"""
CBV
	- 能够直接根据请求方式不同直接匹配对应的方法执行
"""

CBV 源码
urlpatterns = [
    url(r'^admin/', admin.]]></description><category></category></item><item><title><![CDATA[WARNINGS: ?: (urls.W005) URL namespace ‘admin‘ isn‘t unique. You may not be able to reverse all URLs]]></title><link>https://blog.youkuaiyun.com/Cream_Bule/article/details/119704611</link><guid>https://blog.youkuaiyun.com/Cream_Bule/article/details/119704611</guid><author>Cream_Bule</author><pubDate>Sat, 14 Aug 2021 18:34:40 +0800</pubDate><description><![CDATA[在启动 Django 时发现出现如下警告
这是由于在分发路由的过程中，总路由和子路由中的 url 使用了相同的名称空间
在这里插入图片描述


解决方法：
删除子路由中的相同 url 即可

]]></description><category></category></item><item><title><![CDATA[XSS 攻击简述]]></title><link>https://blog.youkuaiyun.com/Cream_Bule/article/details/119679469</link><guid>https://blog.youkuaiyun.com/Cream_Bule/article/details/119679469</guid><author>Cream_Bule</author><pubDate>Fri, 13 Aug 2021 17:02:20 +0800</pubDate><description><![CDATA[XSS攻击通常指的是通过利用网页开发时留下的漏洞，通过巧妙的方法注入恶意指令代码到网页，使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript，但实际上也可以包括Java、 VBScript、ActiveX、 Flash 或者甚至是普通的HTML。
使用 Django 也可以简单模拟次效果
def xss(request):
    s = '''
    &lt;script&gt;
    for (let i=0; i&lt;10000000000; i++){
    ]]></description><category></category></item><item><title><![CDATA[Django 模板语法时间显示误差问题]]></title><link>https://blog.youkuaiyun.com/Cream_Bule/article/details/119679219</link><guid>https://blog.youkuaiyun.com/Cream_Bule/article/details/119679219</guid><author>Cream_Bule</author><pubDate>Fri, 13 Aug 2021 16:51:30 +0800</pubDate><description><![CDATA[在使用以下方法时发现，通过此方法在页面渲染出来的时间要比北京时间推迟8个小时
import datetime

def show(request):
    ctime = datetime.datetime.now()
    return render(request, 'data.html', locals())

&lt;p&gt;{{ ctime|date:'Y-m-d H:i:s' }}&lt;/p&gt;

这是由于 Django 的 settings.py 配置文件中时区设置默认为美国时区
]]></description><category></category></item></channel></rss>