首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Django 官方推荐的姿势:类视图

Django 中 URL 模式的配置方式就是通过 url 函数将 URL 和视图函数绑定。..._404(Category, pk=self.kwargs.get('pk')) return super(CategoryView, self).get_queryset().filter...然后我们调用父类的 get_queryset 方法获得全部文章列表,紧接着就对返回的结果调用了 filter 方法来筛选该分类下的全部文章并返回。...你也许会被这么多方法搞乱,为了便于理解,你可以简单地把 get 方法看成是 detail 视图函数,至于其它的像 get_object、get_context_data 都是辅助方法,这些方法最终在 get...配置好详情页视图之后,访问一下文章的详情,可以看到页面返回的结果和函数视图是一模一样的,至此,类视图就改造完毕。

1.3K20
您找到你想要的搜索结果了吗?
是的
没有找到

Django JSONField SQL注入漏洞(CVE-2019-14234)分析与影响

我们可以很简单地在Django的model中定义JSONField: from django.db import models from django.contrib.postgres.fields import..."], "content": "..." } 我要查询作者是phit0n的所有文章,就可以使用Djangoqueryset: Collection.objects.filter(detail__author...同理,如果我想查询所有含有python这个tag的文章,可以这样编写queryset: Collection.objects.filter(detail__tags__contains='django'.../lookups/ Lookup Transform 我们以上面给出过的一个例子来说明这两者的区别: .filter(detail__tags__contains='django') 这个queryset...正常情况下,transform一般用来在通过外键连接两个表,比如.filter(author__username='phith0n')可以表示在author外键连接的用户表中,找到username字段;

2K32

django-rest-framewor

DRF对django视图配置流程图(个人画) ?...model中的类型不一致,参数也可以调整),字段名称必须与model中的一致 在GET接口逻辑中,获取QuerySet 开始序列化:将QuerySet作业第一个参数传给序列化类,many默认为False...Django程序启动,开始初始化,获取配置信息,获取视图类并加载到内存中,获取url及视图类的对应关系 开始绑定视图类和url的对应关系,执行as_view()方法 as_view()方法被执行的时候传递了参数...),开始执行dispatch方法,注意self是视图类的实例化对象(每个请求都被封装为一个对象) dispatch开始执行get方法,注意此时的get方法会执行retrieve,以为已经被重定向了 开始执行...raise APIException("认证失败")   实现方式看上去非常简单,到token表里面查看token是否存在,然后根据这个信息,返回对应信息即可,然后,在需要认证通过才能访问的数据接口里面注册认证类即可

1.5K10

Python进阶41-drf框架(三)

self.context访问视图类传递过来的内容 # 需求: # 1) 在视图类中,可以通过request得到登陆用户request.user # 2) 在序列化类中,要完成数据库数据的校验与入库操作...,可能会需要知道当前的登陆用户,序列化类无法访问request # 3) 在视图类中实例化序列化对象时,将request对象传递进去 ---- 视图层 class Book(APIView):...再通过有名分组pk确定唯一操作对象 当然也可以自定义主键的有名分组名称lookup_field = 'id' 3.get_serializer():从类属性serializer_class中获得serializer...可以通过 response.data 拿到工具方法返回的Response类型对象的响应数据 工具视图 # 1)工具视图都是GenericAPIView的子类,且不同的子类继承了不听的工具类,重写了请求方法...# 2)工具视图的功能如果直接可以满足需求,只需要继承工具视图,提供queryset与serializer_class即可 视图集 # 1)视图都是优先继承ViewSetMixin类,再继承一个视图

50320

Django项目知识点(四)

本来今天不想发文的,昨天没发,怪不好意思的 django view URL是Web服务的入口,用户通过浏览器发送过来的任何请求,都是发送到一个指定的URL地址,然后被响应。...拿到对应数据库的模型对象 渲染到对于的html页面 在类中有三个重要的访问函数方法 get 就是当我访问当url是,就是执行get的方法 def get(self, request): return...Django ORM用到三个类:Manager、QuerySet、Model。...QuerySet实例 就是从数据库根据自己要求拿数据的 连数据都那不出来,写啥视图 所以在编写queryset必须用django shell 调试 在model中,Django通过给Model增加一个objects...如下查询: qs = new.objects.all() filter() filter是筛选的意思,通过filter筛选得到符合条件的数据集。

1.6K30

DRF进阶之DRF视图和常用功能

127.0.0.1:8000/myapp/api/user6/ #update, delete, retrieve DRF常用功能 主流认证方式 Session认证 HTTP是一个无状态的协议,每次访问都是新的...也就是必须每个人区分开,所以就有了用户名来标识,每次访问页面都要登录,非常麻烦,这就有了会话保持。Cookie+Session就是实现会话保持的技术。...JWT 与普通Token一样,都是访问资源的令牌,区别是普通Token服务端验证token信息要查询数据库验证,JWT验证token信息不用查询数据库,只需要在服务端使用密钥效验。...与普通Token一样,都是访问资源的令牌,区别是普通Token服务端验证token信息要查询数据库验证,JWT验证token信息不用查询数据库,只需要在服务端使用密钥效验。...minute', 'user': '10/minute' } } 重启项目 apipost 请求1分钟内请求10次之后结果如下: 过滤 对于列表数据可能需要根据字段进行过滤,我们可以通过添加

4.4K10

DRF框架学习(四)

使用场景: 重写 get_serializer_class和get_queryset,根据不同的操作返回不同的序列化器类和不同的查询集。...在执行视图的dispatch()方法前,会先进行视图访问权限的判断 在通过get_object()获取具体对象时,会进行对象访问权限的判断 DRF框架提供了四个权限控制类: AllowAny允许所有用户...pass 7.过滤 对于列表数据可能需要根据字段进行过滤,我们可以通过添加django-fitlter扩展来增强支持。...pip install django-filter 在配置文件中增加过滤后端的设置: INSTALLED_APPS = [ ......',) } 在视图中添加filter_fields属性,指定可以过滤的字段 需求:写一个类视图,提供1个接口 1.获取所有的图书信息 GET/books/ class BookListView(ListAPIView

2.7K40

Django性能之道:缓存应用与优化实战

', 'my_value', timeout=3600) # 获取缓存数据 cached_data = cache.get('my_key') 通过合理配置和使用缓存,开发者可以有效地提高Django...何时使用缓存: 当数据库查询或计算成本较高时,可以使用缓存来存储结果,避免重复计算。 当页面内容不经常变化、需要频繁访问时,可以使用缓存来加速页面加载速度。...视图缓存(View Caching) 视图缓存是在视图函数或类视图中缓存整个页面或视图的输出。这可以通过Django的缓存框架来实现。...在Django中,通过优化QuerySet和ORM查询,可以显著提升数据库操作的效率。 1....例如: # 查看查询的执行计划 plan = MyModel.objects.filter(name='example').explain() print(plan) 通过以上策略,我们可以有效地优化Django

7510

Python进阶43-drf框架(五)

payload = jwt_payload_handler(user) # 在视图类中,可以通过 序列化对象.object.get('user'或者'token') 拿到user...import jwt_encode_handler 校验token源码分析 ---- 源码入口 # 前提:访问一个配置了jwt认证规则的视图类,就需要提交认证字符串token,在认证类中完成token...过滤器插件使用,一下两个配置都可以,一般使用filter_class filter_class = CarFilterSet # filter_fields = []  django-filter...方法,设置scope类属性 ii)全局配置scope对应的访问频率:次数/时间 iii)get_cache_key返回的是与限制条件有关的动态字符串 - 限制条件来源于请求参数或请求头...过滤插件:filter_class = CarFilterSet 5、自定义过滤器:自定义过滤类实现filter_queryset即可,根据筛选条件筛选后再返回queryset即可 使用: i)视图类添加过滤类

3.1K20

后端框架学习-Django

视图函数中 from django.shortcuts import render return render(request,'模板文件名',字典数据) 视图层与模板层之间的交互 视图函数中可以将Python...数据库的增删改查可以通过管理器实现。...values(‘字段1’,’字段2’) 等价于select 列1,列2 from xxx 返回:QuerySet内部存字典,每一个字典代表一个数据 如: <QuerySet [{'title...查询谓词 类属性 + ‘__’ + 谓词 定义:做更灵活的条件查询时需要使用查询谓词 说明:每一个查询谓词都是一个独立的查询功能 __exact:等值匹配 Author.objects.filter...IMAP VS POP3: 两者均为“拉取”协议,负责从邮件服务器中下载邮件 IMAP支持摘要浏览功能,并且是双向协议,客户端操作可以反馈给服务器 POP3必须下载全部邮件,且为单向协议,客户端操作无法同步服务器

9.4K40

drf之请求、响应、视图

,那么可以通过条件判断在get_serializer_class方法中通过返回不同的序列化器类名就可以视图方法执行不同的序列化器对象了。...方法: get_queryset(self) :返回视图使用的查询集,主要用来提供给Mixin扩展类使用,是列表视图与详情视图获取数据的基础,默认返回queryset属性,可以重写 get_object...在试图中可以调用该方法获取详情信息的模型类对象。**若详情访问的模型类对象不存在,会返回404。...)处理流程的实现,如果需要编写的视图属于这五种,则视图可以通过继承相应的扩展类来复用代码,减少自己编写的代码量。 ​...3.2 action 在视图集中,我们可以通过action对象属性来获取当前请求视图集时的action动作是哪个。除了默认的方法动作外,还可以添加自定义动作。

2.1K20

Python Day16 Django

method="post"> MTV--View(视图层) 请求对象 request request.GET 一个类似于字典的对象,包含 HTTP GET 的所有参数。...还可以视图函数中建一个类的对象列表 然后引用这个列表 视图函数: def temp_func(request): class Person(object): def __init...如果是一个单独的变量我们可以通过过滤器“|safe”的方式告诉Django这段代码是安全的不必转义。...会自动生成一套数据库抽象的API,可以让你执行关于表记录的增删改查的操作 技巧 通过logging可以查看翻译成的sql语句 在settings.py的最后添加如下内容 LOGGING = {...) filter(kwargs): 它包含了与所给筛选条件相匹配的对象 Returns a new QuerySet 后面加.first()才是对象** filter() QuerySet

1.9K10

跟着官方文档学Python——Django Rest framework

通过GET/ POST/ PUT/ DELETE来获取/新建/更新/删除资源。一般使用JSON格式返回数据。大多数web框架都有相应的插件支持RESTful API。...两者都是数据转换格式,比如我们在django中获取到的数据默认是模型对象,但是模型对象数据无法直接提供给前端或别的平台使用,所以需要把数据进行序列化,变成字符串或者json数据,提供给别人,这是序列化。...pip install django-filter # Filtering支持。...用于编写字符串路由 # django.urls.re_path 用于编写正则路由 测试API,命令行启动服务器 python manage.py runserver 可以从命令行访问我们的API,使用诸如...Api List中可以查看所有学生信息,也可以进行增删查改(POST/DELETE/GET/PUT) 也可以通过携带用户id的url访问单个用户 http://127.0.0.1:8000/students

2.3K10

PythonWeb框架之Django

一般是用户通过浏览器向我们的服务器发起一个请求(request),这个请求回去访问视图函数,(如果不涉及到数据调用,那么这个时候视图函数返回一个模板也就是一个网页给用户),视图函数调用模型,模型去数据库查找数据...View: 视图是一个请求处理函数,他接受HTTP请求并返回HTTP响应,视图通过模型访问满足请求所需的数据,并将响应的格式委托给模板....views(即在一个名为views.py的文件中.) 2.处理请求(views.py) 视图是web应用程序的核心,从web客户端接收HTTP请求并返回HTTP响应,在两者之间,他们编制框架的其他资源来访问数据库...# 是否开启URL访问地址后面没有/跳转至带有/的路径的配置项 APPEND_SLASH=True Django settings.py配置文件中默认没有 APPEND_SLASH 这个参数, Django...我们去network那个地方看看,浏览器看到的都是渲染之后的结果,通过network的response的那个部分可以看到,这个a标签全部是特殊符号包裹起来的,并不是一个标签,这都是django搞得事情。

2.5K50

【愚公系列】2022年04月 Python教学课程 74-DRF框架之过滤

文章目录 一、普通过滤 1.针对当前用户进行筛选 2.针对网址进行筛选 3.针对查询参数进行筛选 二、通用过滤 1.全局设置 2.视图设置 3.简单过滤 4.搜索器过滤 4.1 多字段查找 4.2 多字段查找...4.3 嵌套查找 4.4 参数说明 4.5 自定义过滤器 一、普通过滤 REST 框架的通用列表视图的默认行为是返回模型管理器的整个查询集。...筛选子类的任何视图的查询集的最简单方法是重写该方法。GenericAPIView.get_queryset() 重写此方法允许您以多种不同的方式自定义视图返回的查询集。...安装对应的包:pip install django-filter 1.全局设置 INSTALLED_APPS = [ ......'django_filters', ... ] REST_FRAMEWORK = { 'DEFAULT_FILTER_BACKENDS': ['django_filters.rest_framework.DjangoFilterBackend

2.5K30
领券