web框架
来一串八二年的葡萄干
用技术改变世界!技术强,则中国强!加油!
展开
-
Django项目定时任务(django-crontab)
Django项目使用定时任务(django-crontab)关于django-crontab定时任务,首先他是操作系统层面的定时任务,一旦激活启动,只要操作系统在运行,则定时任务会一直在后台运行。定时任务可以使用在页面静态化技术上,以便按照我们想要的时间间隔自动生成页面下面以Django项目页面静态化技术应用定时任务来进行举例:首先安装pip install django-crontab添加应用# settings.pyINSTALLED_APPS = [ ... # 定时原创 2020-11-05 15:35:42 · 5688 阅读 · 2 评论 -
DRF框架中的异常处理 Exceptions
DRF框架中的异常处理 Exceptions点我查看异常处理官方文档REST framework提供了异常处理,我们可以自定义异常处理函数。例如处理关于数据库的异常需导入from rest_framework.views import exception_handlerfrom rest_framework.views import exception_handlerfrom rest_framework import statusfrom django.db import Database原创 2020-11-05 11:58:08 · 736 阅读 · 0 评论 -
DRF框架的排序OrderingFilter和分页Pagination
DRF框架的排序OrderingFilter和分页Pagination点我查看官方文档对于列表数据,REST framework提供了OrderingFilter过滤器来帮助我们快速指明数据按照指定字段进行排序。使用方法:在类视图中设置filter_backends,使用rest_framework.filters.OrderingFilter过滤器,REST framework会在请求的查询字符串参数中检查是否包含了ordering参数,如果包含了ordering参数,则按照ordering参数指原创 2020-11-05 11:57:51 · 822 阅读 · 0 评论 -
DRF框架中过滤的使用方法
DRF框架中过滤的使用方法Filtering点我查看官方文档对于列表数据可能需要根据字段进行过滤,我们可以通过添加django-fitlter扩展来增强支持。pip install django-filter安装应用(注册)# settings.pyINSTALLED_APPS = [ ... 'django_filters', ...]在配置文件中增加过滤后端的设置:# settings.pyREST_FRAMEWORK = { 'DEFAULT_F原创 2020-11-04 16:00:56 · 1011 阅读 · 0 评论 -
DRF中关于限流的配置方式
DRF中关于限流的配置方式使用限流可以对接口访问的频次进行限制,以减轻服务器压力。1.使用可以在配置文件中,使用DEFAULT_THROTTLE_CLASSES和DEFAULT_THROTTLE_RATES进行全局配置REST_FRAMEWORK = { # 节流的配置列表 'DEFAULT_THROTTLE_CLASSES': ( 'rest_framework.throttling.AnonRateThrottle', #匿名未认证用户,使用IP区分用户原创 2020-11-04 15:51:48 · 456 阅读 · 2 评论 -
Django REST framework中认证和权限的使用方法
Django REST framework中认证和权限的使用方法认证方式:基本认证会话认证(SessionAuthentication)令牌认证(TokenAuthentication)基本认证:此身份验证方案使用HTTP基本身份验证,该身份针对用户的用户名和密码进行了签名。基本身份验证通常仅适用于测试。如果成功通过身份验证request.user将是DjangoUser实例。未经授权的身份验证的响应将被拒绝 HTTP 401 Unauthorized会话认证(SessionAuthe原创 2020-11-04 13:36:24 · 1034 阅读 · 1 评论 -
DRF中的路由Router使用
DRF中的路由Router使用对于视图集ViewSet,我们除了可以自己手动指明请求方式与动作action之间的对应关系外,还可以使用Routers来帮助我们快速实现路由列表信息。REST framework提供了两个routerSimpleRouterDefaultRouter1.使用方法1) 创建router对象router = DefaultRouter()2) 注册视图集,注册语法为router.register(prefix, viewset,basename)pre原创 2020-11-04 12:20:46 · 1521 阅读 · 0 评论 -
DRF中的视图集使用
DRF中的视图集使用常用的视图集有:ViewSetGenericViewSetModelViewSetReadOnlyModelViewSetViewSet一个ViewSet类只是一种基于类的View,继承自APIView,作用也与APIView基本类似,提供了身份认证、权限校验、流量管理等。在ViewSet中,它不提供任何方法处理程序,需要我们自己重写该类并明确实现action方法。class BookViewSet(viewsets.ViewSet): def list(原创 2020-11-04 11:59:58 · 449 阅读 · 0 评论 -
Django REST framework中的几个子类视图分享
Django REST framework中的几个子类视图分享1) CreateAPIViewfrom rest_framework.generics import CreateAPIView提供 post 方法继承自: GenericAPIView、CreateModelMixinclass CreateAPIView(mixins.CreateModelMixin, GenericAPIView): """ Concrete view原创 2020-11-04 11:29:32 · 234 阅读 · 1 评论 -
Django REST framework中的Mixin扩展类
Django REST framework中的Mixin扩展类1)ListModelMixin列表视图扩展类,提供list(request, *args, **kwargs)方法快速实现列表视图,返回200状态码。该Mixin的list方法会对数据进行过滤和分页。源码:class ListModelMixin(object): """ List a queryset. """ def list(self, request, *args, **kwargs):原创 2020-11-04 11:08:25 · 421 阅读 · 0 评论 -
Django REST framework中的GenericAPIView的使用
Django REST framework中的GenericAPIViewrest_framework.generics.GenericAPIView继承自APIVIew,增加了对于列表视图和详情视图可能用到的通用支持方法。通常使用时,可搭配一个或多个Mixin扩展类。使用GenericAPIView类一般需要实现queryset属性或者重写get_queryset方法GenericAPIView支持定义的属性:列表视图与详情视图通用:queryset列表视图的查询集serializer原创 2020-11-04 11:00:36 · 1683 阅读 · 0 评论 -
Django REST framework中的APIView的使用
Django REST framework中的APIViewrest_framework.views.APIViewAPIView是REST framework提供的所有视图的基类,继承自Django的View父类。APIView与View的不同之处在于:传入到视图方法中的是REST framework的Request对象,而不是Django的HttpRequeset对象;视图方法可以返回REST framework的Response对象,视图会为响应数据设置(render)符合前端要求的格原创 2020-11-04 10:43:41 · 2686 阅读 · 0 评论 -
Django REST framework的请求与响应
Django REST framework的请求与响应RequestREST framework 传入视图的request对象不再是Django默认的HttpRequest对象,而是REST framework提供的扩展了HttpRequest类的Request类的对象。REST framework 提供了Parser解析器,在接收到请求后会自动根据Content-Type指明的请求数据类型(如JSON、表单等)将请求数据进行parse解析,解析为类字典对象保存到Request对象中。Request原创 2020-11-04 10:34:04 · 608 阅读 · 0 评论 -
模型类序列化器ModelSerializer的使用
模型类序列化器ModelSerializer如果我们想要使用序列化器对应的是Django的模型类,DRF为我们提供了ModelSerializer模型类序列化器来帮助我们快速创建一个Serializer类。ModelSerializer与常规的Serializer相同,但提供了:基于模型类自动生成一系列字段包含默认的create()和update()的实现1.定义比如我们创建一个BookInfoModelSerializerfrom rest_framework import se原创 2020-11-03 13:53:17 · 667 阅读 · 0 评论 -
反序列化的使用
反序列化的使用反序列化主要分为两个部分,验证和保存验证:使用序列化器进行反序列化时,需要对数据进行验证后,才能获取验证成功的数据或保存成模型类对象。在获取反序列化的数据前,必须调用**is_valid()**方法进行验证,验证成功返回True,否则返回False。验证失败,可以通过序列化器对象的errors属性获取错误信息,返回字典,包含了字段和字段的错误。验证成功,可以通过序列化器对象的validated_data属性获取数据。在定义序列化器时,指明每个字段的序列化类型和选项参数,本身就是一原创 2020-11-03 13:19:42 · 1645 阅读 · 1 评论 -
序列化器的基本使用
序列化器的基本使用我们在django shell中来学习序列化器的使用。python manage.py shell基本使用1) 先查询出一个图书对象from book.models import BookInfobook = BookInfo.objects.get(id=4)2) 构造序列化器对象from book.serializers import BookInfoSerializerserializer = BookInfoSerializer(book)3)获取序列化原创 2020-11-03 12:09:42 · 507 阅读 · 0 评论 -
关于Django REST framework中Serializer字段和选项
关于Django REST framework中Serializer字段和选项1.定义Serializer类Django REST framework中的Serializer使用类来定义,须继承自rest_framework.serializers.Serializer。例如,我们已有了一个数据库模型类BookInfoclass BookInfo(models.Model): name = models.CharField(max_length=20, verbose_name='名称')原创 2020-11-03 11:30:31 · 1246 阅读 · 0 评论 -
Django REST framework简介及安装配置等
Django REST framework简介及安装配置等Django REST framework 框架是一个用于构建Web API 的强大而又灵活的工具。通常简称为DRF框架 或 REST framework。DRF框架是建立在Django框架基础之上,由Tom Christie大牛二次开发的开源项目。1、在序列化与反序列化时,虽然操作的数据不尽相同,但是执行的过程却是相似的,也就是说这部分代码是可以复用简化编写的。2、在开发REST API的视图中,虽然每个视图具体操作的数据不同,但增、删原创 2020-11-03 10:43:47 · 453 阅读 · 0 评论 -
Django项目之创建工程(第二步)
Django项目之创建工程(第二步)创建工程# 生成一个 django 项目工程的使用方式:django-admin startproject 工程名称django-admin : django 生成项目工程的命令startproject : 快速创建一个 django 项目, 使用这个命令可以快速下载一个项目模板, 在我们所在的目录工程名称 : 你想生成的项目名称, 这个名称可以随意定义注意:在创建项目之前,最好自己在一个指定的文件夹下创建,方便后期维护与查找。使用开发服务器, 运行原创 2020-10-29 19:14:19 · 116 阅读 · 0 评论 -
Django项目环境搭建(第一步)
Django项目环境搭建1.创建虚拟环境创建一个单独的虚拟环境, 搭建项目.mkvirtualenv django_env -p python3mkvirtualenv : 创建一个新的虚拟环境django_env : 创建的新虚拟环境名称, 这个名称可以随意制定, 自己能看懂即可-p : 制定使用的python解释器版本来创建虚拟环境python3 : 我们这里使用 python3 的解释器.2.安装 Django这里我们以django 2.2.5 版本为例,注意需要联网p原创 2020-10-29 18:55:54 · 145 阅读 · 0 评论 -
Django框架简介(看这篇就够了)
Django框架简介Django 简介Django,发音为[`dʒæŋɡəʊ]django 是用 python 语言写的开源 web 开发框架,并遵循 MVT 设计模式。诞生历史: 劳伦斯出版集团为了开发以新闻内容为主的网站,而开发出来了这个框架,于2005年7月在 BSD 许可证下发布。这个名称来源于比利时的爵士音乐家 DjangoReinhardt,他是一个吉普赛人,主要以演奏吉它为主,还演奏过小提琴等。由于 Django 在近年来的迅速发展,应用越来越广泛,被著名IT开发杂志 SDTime原创 2020-10-29 18:42:06 · 15142 阅读 · 1 评论 -
Flask-SQLAlchemy的介绍与安装
Flask-SQLAlchemy的介绍与安装1.认识Flask-SQLAlchemyFlask-SQLAlchemy 是一个为 Flask 应用增加 SQLAlchemy 支持的扩展。它致力于简化在 Flask 中 SQLAlchemy 的使用。SQLAlchemy 是目前python中最强大的 ORM框架, 功能全面, 使用简单。再来说一下ORM优缺点优点有语法提示, 省去自己拼写SQL,保证SQL语法的正确性orm提供方言功能(dialect, 可以转换为多种数据库的语法),原创 2020-10-27 11:01:38 · 561 阅读 · 0 评论 -
Flask框架中应用配置的一些处理方案
Flask框架中应用配置的一些处理方案1.加载配置app.config 用于设置配置, 该属性继承自 dict, 可以以字典形式赋值取值例:from datetime import timedeltafrom flask import Flask, sessionapp = Flask(__name__)app.secret_key = 'test'# config属性用于设置配置app.config['PERMANENT_SESSION_LIFETIME'] = timedelt原创 2020-10-27 10:48:17 · 273 阅读 · 1 评论 -
Flask框架中的综合认证方案
Flask框架中的综合认证方案1.统一处理需求: 获取用户身份分析: 除了静态资源, 基本所有视图都需要获取用户身份, 每个视图单独获取出现大量的代码冗余解决办法: 设置 请求钩子, 并通过 g变量 将数据传递给视图函数代码示例:from flask import Flask, session, gapp = Flask(__name__)app.secret_key = 'test'# 需求1: 所有视图都需要获取用户身份# 解决办法: 用钩子函数进行封装 减少代码冗余@a原创 2020-10-27 10:29:21 · 222 阅读 · 0 评论 -
Flask中的上下文(context)分享
Flask中的上下文(context)分享上下文:是一个 数据容器,保存了 Flask 程序运行过程中的一些信息。Flask中有两种上下文,请求上下文 和 应用上下文两种上下文的使用范围相同, 从请求开始到请求结束, 在范围外使用会报错1.请求上下文记录一些和请求有关的数据, 包括request和session两个变量request封装了HTTP请求的内容,针对的是http请求。session用来记录请求会话中的信息,针对的是用户信息。2.应用上下文记录一些和应用有关的数据, 包括原创 2020-10-27 10:21:57 · 390 阅读 · 0 评论 -
Flask框架中蓝图的使用
Flask框架中蓝图的使用1.基本使用蓝图的作用: 实现Flask项目 模块化项目模块化主要是 将业务以功能模块进行划分, 每个功能模块对应一个包, 用于存放和其有关的视图/工具/模型文件等, 如home, user对于大型项目, 一般 每个功能模块对应创建一个蓝图, 由多个蓝图代替应用来分别管理各模块的视图--------- project # 工程目录 |------ main.py # 启动文件 |------ user # 用户模块 | |--- __init__.py原创 2020-10-27 10:08:35 · 538 阅读 · 0 评论 -
Flask框架中的请求钩子分享
Flask框架中的请求钩子请求钩子可以对请求的各阶段进行监听, 方便开发者 针对请求完成一些统一的处理, 以便减少重复代码, 作用类比Django中的中间件开发中中主要会用到以下四种请求钩子:before_request每次执行视图函数之前调用对请求进行一些准备处理如果在该函数中返回了一个响应,视图函数将不再被调用after_request如果没有抛出错误,每次执行视图函数之后(已经包装为响应对象)调用在此函数中可以对响应值在返回之前做最后一步修改处理接受一个参数:包装好的响应对象原创 2020-10-27 09:59:41 · 192 阅读 · 0 评论 -
Flask框架的请求与响应
Flask框架的请求与响应Flask的请求flask的请求数据通过 request 对象来获取常用属性:代码示例:from flask import Flask, requestfrom werkzeug.datastructures import FileStorageapp = Flask(__name__)@app.route('/', methods=['get', 'post'])def index(): # 获取请求的基础数据 # print(req原创 2020-10-27 09:59:16 · 537 阅读 · 0 评论 -
Flask框架中路由的定义和使用方法
Flask框架中路由的定义和使用方法1.定义路由定义路由的三个细节路由对应的URL必须以 / 开头app.url_map 获取所有路由规则,路由规则中主要包含 URL资源段、支持的请求方式、视图函数标记 三部分内容app.route() 的 methods参数 指定路由支持的请求方式from flask import Flaskapp = Flask(__name__)# 1.路由对应的URL必须以/开头# 2.通过app的url_map属性获取所有的路由规则 (URL资源段 支持原创 2020-10-27 09:58:43 · 2439 阅读 · 0 评论 -
创建最小的Flask应用
创建最小的Flask应用新建文件helloflask.py导入Flask类from flask import Flask创建Flask对象, 接收一个参数__name__,它会指向程序所在的包# 1.创建Flask应用app = Flask(__name__)装饰器的作用是将路由映射到视图函数 index# 3.定义路由@app.route('/')def index(): return 'hello flask'Flask应用程序实例的 run 方法 启动 WEB 服务原创 2020-10-27 09:59:54 · 156 阅读 · 0 评论 -
Python中flask框架简介(扩展包)
Flask诞生于2010年,是Armin ronacher(人名)用 Python 语言编写的 轻量级Web开发框架。Flask 本身相当于一个内核, 主要实现了路由分发和模板渲染功能, 分别集成自Werkzeug和 Jinja2模块包, 这两个也是Flask框架的核心。虽然核心精简, 但flask提供了非常好的扩展机制, 开发中的各类需求基本都有对应的官方/第三方扩展可以实现, 甚至连自己动手实现也很简单。Flask常用扩展包Flask-SQLalchemy:ORM操作数据库;Flask-RES原创 2020-10-26 09:00:37 · 1080 阅读 · 2 评论