drf认证、权限、频率实现
drf认证、权限、频率实现drf认证功能实现1234567891011121314151617181.创建一个任意的py文件,在里面任意的定义一个类,假设该类名为MyAuth2.继承BaseAuthenticationfrom rest_framework.authentication import BaseAuthentication 从这里导入3.为该类创建一个authenticate方法4.在该类中书写认证方法,如果认证成功返回none或元祖,认证失败的话抛出一个异常AuthenticationFailedeg:class Login_Auth(BaseAuthentication): def authenticate(self,request): token = request.GET.get('token') try: models.Auth.objects.get(token=token) return None #ps:也可以返回一个元祖 except: ...
drf过滤、排序、分页器
drf过滤、排序、分页器drf内置的排序、过滤功能使用1234567891011121314使用的话十分的简单from rest_framework.filters import OrderingFilter, SearchFilter 导入这两个类,在可以进行查询的接口中进行一定的配置即可#过滤功能 filter_backends = [SearchFilter,] search_fields=('name',) # 表中的字段,会去表中该字段进行匹配路径中的写入方式 http://127.0.0.1:8000/students/?search=e # 只能写search #排序功能 filter_backends = [OrderingFilter] ordering_fields = ('price', 'id') #表中的字段,可以以这些字段进行排序路径中的书写方式 http://127.0.0.1:8000/students/?ordering=-age # 必须写ordering
djan ...
RESTful API规范
RESTful API规范(10条) REST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征性状态转移)。 它首次出现在2000年Roy Fielding的博士论文中。
123456789101112131415161718192021222324252627282930313233343536373839404142434445461.数据的安全保障 #数据传输一般使用https协议进行传输2.接口特征表现 #前后数据交互的接口需要在网址中写入api关键字,用于标识该地址是用于返回数据的3.多数据版本共存 #应该将API的版本号放入URL4.路径 #在restful规范中指出,每一个路径应当看成一个资源,例如books路径就应该看成所有的图书信息 #并且在设计路径的时候不要使用动词!5.资源操作方式由请求决定 #我们在设计路径的时候不使用动词,这种时候我们就需要使用另外一种方式去判断该请求的目的。例如我们是对一本图书进行删除,增加等 #共有7种请求方式 常用: GET(SELECT):从服务 ...
drf序列化器
序列化器的各个字段以及字段内属性字段表格:
BooleanField
BooleanField()
NullBooleanField
NullBooleanField()
CharField
CharField(max_length=None, min_length=None, allow_blank=False, trim_whitespace=True)
EmailField
EmailField(max_length=None, min_length=None, allow_blank=False)
RegexField
RegexField(regex, max_length=None, min_length=None, allow_blank=False)
SlugField
SlugField(maxlength=50, min_length=None, allow_blank=False) 正则字段,验证正则模式 [a-zA-Z0-9-]+
URLField
URLField(max_length=200, min_length=None, ...
rest-framework初识
什么是rest_framework12rest_framework简称drfrest_framework是基于django与RESTful API规范设计的框架。
drf的简单使用1234567891011121314151617181920212223242526272829303132331.安装 pip install djangorestframework 2.注册 在django的配置文件中进行注册,drf本质是一个app,所以我们在注册app的地方注册即可 3.进行数据迁移 python manage.py makemigrations python manage.py migrate 4.新写一个序列化器类from rest_framework import serializersclass Book(serializers.Serializer): #写字段 id = serializers.IntegerField(read_only=True) name = serializers.CharField(min_length=3, ...
web应用介绍
什么是web应用web应用是一种可以通过web访问的应用程序,用户只需要有浏览器即可,不需要安装其他软件
什么是web框架web框架是一种开发框架,用于支持网络应用和网络服务的开发
动静态网页的区别123动态网页:动态网页简单的说就是会随着用户的请求不同而改变内容的网页,一般会有一些后端的代码与前端代码进行交互静态网页:简单的说静态网页就是用户无论何时打开网页都是没有变化的,内容是固定的
python常用的三个web框架的区别1234567#三个框架各自的特点Django: 大而全,集成了很多组件,有些笨重Flask: 小而轻,原生组件几乎为0,但是第三方库极多Tornado: 原生的异步非阻塞框架,在处理并发的任务上十分的优秀
MVC与MTV123456789MVC:一般市面上的web框架就是MVC框架的,他们将一个web应用分解成三部分,已达到解耦合的目的 M:Models(模板层)用于和数据库打交道 V:View(视图层)负责与用户进行交互 C:Controller(控制层)进行逻辑处理的一层MTV:Django的web模式,本质还是MVC模式 M: ...
flask的简单使用
flask的简单使用123456789101112131415161.安装flaskpip install flask2.新建一个py项目,并实例化获得一个flask对象eg:from flask import Flask,request,redirectapp = Flask(__name__)3.写一个函数@app.route('/')def hello_world(): return 'Hello World!'4.启动服务if __name__ == '__main__': app.run(host='127.0.0.1',port=4000)
flask返回页面123456789101112131415161718192021221.重定向 1.导入redirect from flask import redirect 2.在对应的函数中返回 @app.route('/') def hello_world(): ...
scrapy提高爬取效率
提高爬虫效率1234567891011121314151617181 提高scrapy的爬取效率(异步框架,基于twisted,性能很高了,可以优化的点),面试聊- 在配置文件中进行相关的配置即可:(默认还有一套setting,类比django)#1 增加并发:默认scrapy开启的并发线程为32个,可以适当进行增加。在settings配置文件中修改CONCURRENT_REQUESTS = 100值为100,并发设置成了为100。CONCURRENT_REQUESTS = 100#2 降低日志级别:在运行scrapy时,会有大量日志信息的输出,为了减少CPU的使用率。可以设置log输出信息为INFO或者ERROR即可。在配置文件中编写:LOG_LEVEL = ‘INFO’# 3 禁止cookie:(cnblogs不需要cookie)如果不是真的需要cookie,则在scrapy爬取数据时可以禁止cookie从而减少CPU的使用率,提升爬取效率。在配置文件中编写:COOKIES_ENABLED = False# 4禁止重试:对失败的HTTP进行重新请求(重试)会减慢爬取速度,因此可以禁 ...
scrapy的Request与Item对象
scrapy的Request与itemRequest对象123456导入位置from scrapy.http.request import Request参数: url --- 一个网址,yield住之后下次爬取的地址 callback --- 函数名,当request请求爬取回来之后执行的函数 meta --- request与回调函数之间传递参数使用,传字典
Item对象123456789101112131415161718191.导入from scrapy import Item2.自己写一个类并且继承Item类eg:class FirstscrapyItem(scrapy.Item): name = scrapy.Field() 当你在程序中yield住一个Item对象之后,程序便会自动去保存3.在爬虫程序中每爬取一页都实例化一个对象item = FirstscrapyItem()ps:往这个对象中存值只能使用[]的方式,不能用.eg:item['url'] = url4.yield返回该值即可,接下来他会根据set ...
celery在linux的后台运行
celery部署到服务器上当我们写了一个celery的定时任务之后,我们需要将其放到我们服务器上并让其在后台执行。
我本来是直接部署到服务器上,然后执行了两句命令,但是没想到确失败了。经过一番资料的查找,我发现需要用到两个命令
12345678910& -- 这个符号可以让你的程序在后台运行nohup -- 这个命令可以让你的程序在你退出ssh链接之后不被杀死eg: nohup ./start-dishi.sh >output 2>&1 & 解释: 1. &符号的含义 带&的命令行,即使terminal(终端)关闭,或者电脑死机程序依然运行(前提是你把程序递交到服务器上); 2. 2>&1的意思 这个意思是把标准错误(2)重定向到标准输出中(1),而标准输出又导入文件output里面,所以结果是标准错误和标准输出都导入文件output里面了。 至于为什么需要将标准错误重定向到标准输出的原因,那就归结为标准错误没有缓冲区,而stdout有。这就会导致 >output 2>outpu ...