1.自己写: class UserView(APIView): versioning_class = ParamVersion def get(self,request,*args,**kwargs): v1 = request._request.GET.get('version') v2 = request.query_params.get('version') #获取结果是一样的,两种获取方式 print(v1,v2) 2.使用自带类: from rest_framework.version…
权限认证:1.项目下utils文件写permissions.py文件 from rest_framework.permissions import BasePermission class SVIPPermission(BasePermission): #用户权限类 message = 'SVIP才可以访问' #认证错误时的返回信息 def has_permission(self, request, view): ut = request.user.usertype if ut == 3: re…
用户认证:1.项目下utils文件写auth.py文件 from rest_framework import exceptions from api import models from rest_framework.authentication import BaseAuthentication #还有4个类可以继承 class BasicAuthentication(BaseAuthentication) 可以弹出登录框 class SessionAuthentication(BaseAut…
1.节流自定义类: import time from api import models VISIT_RECORD = {} class VisitThrottle(BaseThrottle): #设置访问频率为60秒3次 def allow_request(self, request, view): #获取用户ID # remote_addr = request.META.get('REMOTE_ADDR') remote_addr = self.get_ident(request) ctim…
#以中间件方式解决API数据访问跨域问题1.API下新建文件夹下写PY文件a.引入内置类继承: from django.middleware.common import MiddlewareMixin class CORSMiddleware(MiddlewareMixin): def process_response(self,request,response): #添加响应头 #允许你的域名来获取我的数据,'*'也可以单独设置 response['Access-Control-Allow-O…
自动生成4个url路由:from rest_framework import routersrouter = routers.DefaultRouter()router.register(r'wrx',PagesView)urlpatterns = [ re_path(r'^(?P<version>[v1|v2]+)/',include(router.urls)),]生成的URLapi/ ^(?P<version>[v1|v2]+)/ ^wrx/$ [name='userinfo-…
渲染器:作用于页面,JSONRenderer只是JSON格式,BrowsableAPIRenderer有页面,.AdminRenderer页面以admin形式呈现(需要在请求地址后缀添加?fromat=admin)渲染器全局与局部配置方法全局配置: REST_FRAMEWORK = { #渲染器配置 'DEFAULT_RENDERER_CLASSES': ['rest_framework.renderers.JSONRenderer', 'rest_framework.renderers.Bro…
分页a.分页,看第N页,每页显示N条数据方式一:使用PageNumberPagination创建分页对象,配合settings全局配置 views设置 from rest_framework.pagination import PageNumberPagination class PagesView(APIView): def get(self,request,*args,**kwargs): #获取所有数据 m = models.UserInfo.objects.all() #创建分页对象 p…
方式一 1.settings设置 INSTALLED_APPS = [ ... 'rest_framework', ] 2.views设置 from rest_framework.response import Response class PagesView(APIView): def get(self,request,*args,**kwargs): ... ... return Response(ser.data) 方式二 1.urls: re_path(r'^(?P<version>[…
满足两个要求,request.Post中才有值 1.请求头要求:请求头中的Content-Type为application/x-www-form-urlencoded 2.数据格式要求 name=x&age=xx&gender=x 如: a.form表单提交 <form methed..> input </form> b.ajax提交 $.ajax({ url:.. type:POST headers:{Content-Type:application/json}…
序列化方式一 :在业务类里序列化数据库数据 class RolesView(APIView): def get(self,request,*args,**kwargs): roles = models.Role.objects.all().values('id','title')[1:3] ret = list(roles) r = json.dumps(ret,ensure_ascii=False) return HttpResponse(r) 方式二:写个序列化的类,在业务类中引用,序列化类…
用户POST登录-->后台验证用户名密码-->验证正确返回TOKEN-->验证错误返回错误信息 class UserAPI(APIView): #用户登录类 def post(self,request,*args,**kwargs): ret = {'code': 200, 'msg': None} try: #取前台数据 user = request._request.POST.get('username') pwd = request._request.POST.get('passw…
原文地址:http://blog.codefx.org/libraries/junit-5-conditions/ 原文日期:08, May, 2016 译文首发:Linesh 的博客:「译」JUnit 5 系列:条件测试 我的 Github:http://github.com/linesh-simplicity 上一节我们了解了 JUnit 新的扩展模型,了解了它是如何支持我们向引擎定制一些行为的.然后我还预告会为大家讲解条件测试,这一节主题就是它了. 条件测试,指的是允许我们自定义灵活的标准…
原文地址:http://blog.codefx.org/design/architecture/junit-5-extension-model/ 原文日期:11, Apr, 2016 译文首发:Linesh 的博客:「译」JUnit 5 系列:扩展模型(Extension Model) 我的 Github:http://github.com/linesh-simplicity 概述 环境搭建 基础入门 架构体系 扩展模型(Extension Model) 条件断言 注入 动态测试 ... (如果…
关于项目 项目地址 预览地址 记录最近做的一个 demo,前端使用 React,用 React Router 实现前端路由,Koa 2 搭建 API Server, 最后通过 Nginx 做请求转发. 文章列表 第一篇:React + Node 单页应用「一」前端搭建 React + Node 单页应用「二」OAuth 2.0 授权认证 & GitHub 授权实践 这是第二篇,介绍下 OAuth 2.0 授权机制,以及 Github App 授权过程,通过获取授权使用 Github API. O…
上周,JavaScript 引擎「V8」的开发团队在该项目官方网站上正式宣布推出最新的 8.0 版本.这次更新的重点主要集中在错误修复及性能改善上,正式的版本将在数周后随着谷歌 Chrome 80 稳定版一起发布. V8 是谷歌公司推出的开源高性能 JavaScript 引擎,主要用于提升 Web 浏览器内部 JavaScript 脚本执行的性能.V8 通过 C++ 语言编写,主要用在 Chrome 浏览器以及 Node.js 上,实现了对 ECMAScript 与 WebAssembly 的支…
一.setting设置 1.设置 局域网可以部署连接 ALLOWED_HOSTS = ['*.besttome.com','192.168.1.100'] 2.static配置 STATIC_URL = '/static/' STATICFILES_DIRS = ( os.path.join(BASE_DIR,'static'), ) 3.后台中文配置 LANGUAGE_CODE = 'zh-hans' TIME_ZONE = 'Asia/Shanghai' 4.数据库配置 详见https://…
原文地址:http://blog.codefx.org/libraries/junit-5-setup/ 原文日期:15, Feb, 2016 译文首发:Linesh 的博客:环境搭建 我的 Github:http://github.com/linesh-simplicity 2015年11月,Junit Lambda 团队发布了该项目的 第一版原型 .此后,该项目把名称改成了 JUnit 5 并独立了出来,随后在2016年2月份的时候发布了一个 alpha 版本.本篇打算以一系列文章,简短地探…
本系列前三章: http://www.cnblogs.com/CQ-LQJ/p/5604331.htmlPermission权限基本操作指令 http://www.cnblogs.com/CQ-LQJ/p/5609690.htmlUser权限基本操作指令 http://www.cnblogs.com/CQ-LQJ/p/5620490.html设计自有权限管理系统设计思路 正文: 权限管理界面分三部分:一个点击进入该页面的按钮.以及该页面的权限列表.添加按钮,删除按钮; 权限管理界面页面是最基础的…
若在阅读本片文章遇到权限操作问题,请查看本系列的前两章! http://www.cnblogs.com/CQ-LQJ/p/5609690.html和http://www.cnblogs.com/CQ-LQJ/p/5604331.html 现在步入正题,这篇文章是关于自有权限管理系统设计的思路描述,自有权限管理系统是抛弃django自带的后台管理界面,基于自己编写的权限管理界面对用户权限的管理! 首先上图:(自己设计的权限系统界面,代码将后续文章中写出) 权限管理界面主要是添加和删除权限,查看官方…
若需建立py文件进行测试,则在文件开始加入以下代码即可 #coding:utf-8 import os os.environ.setdefault("DJANGO_SETTINGS_MODULE", "www.settings") ''' Django 版本大于等于1.7的时候,需要加上下面两句 import django django.setup() 否则会抛出错误 django.core.exceptions.AppRegistryNotReady: Model…
原文地址:http://blog.codefx.org/design/architecture/junit-5-architecture/ 原文日期:29, Mar, 2016 译文首发:Linesh 的博客:JUnit 5 系列:架构体系 我的 Github:http://github.com/linesh-simplicity 现在,我们已经知道了 如何配置 JUnit 5 环境 及 如何写一些测试,接下来就来看一点封面下的内容吧.本篇我们将讨论 JUnit 5 的架构体系,以及它之成形如此…
原文地址:http://blog.codefx.org/libraries/junit-5-basics/ 原文日期:25, Feb, 2016 译文首发:Linesh 的博客:JUnit 5 系列:基础入门 我的 Github:http://github.com/linesh-simplicity 上周我们刚刚搭建好了 JUnit 5 的环境,现在我们可以写测试了.这节就让我们来写它几个吧! 概述 本文章是这个 JUnit 5 系列的一部分: 环境搭建 基础入门 架构体系 扩展模型(Exten…
先做性能分析 - 两个工具 django.db.connection from django.db import connection# contextprint connection.queries# content''' result is:[{'time': '0.002','sql': u'SELECT `django_session`.`session_key`, `django_session`.`session_data`, `django_session`.`expire_dat…
Easy 461.汉明距离 因为原题目翻译效果不佳,这里是笔者自己的理解. 输入两个二进制数 x.y, 输出将 y 变为 x 所需改变的二进制位数,成为汉明距离. 注意: 0 ≤ x, y < 2e31. 示例: 输入: x = 1, y = 4 输出: 2 解释: 1 (0 0 0 1) 4 (0 1 0 0) ↑ ↑ 补充「位运算」 符号 描述 运算规则 & 与 两个位都为 1 时,结果才为 1 | 或 两个位都为 0 时,结果才为 0 ^ 异或 两个位相同为 0,相异为 1 ~ 取反…
针对Django 后台自带的用户管理系统,虽说感觉还可以,但是为了方便用户一些操作,特别设计自定义的用户权限管理系统. 在制作权限页面前,首先需要了解权限和用户配置权限的指令,上章讲到权限的添加,删除,查询,本章介绍用户权限的操作指令. 首先需要导入Permission, User模块: from django.contrib.auth.models import Permission, User #用户 权限 添加权限: Permission.objects.create(name=u'权限管…
当一张表和多个表ForeignKey关联,并且多个FK中只能选择其中一个或其中n个时,可以利用contenttypes,只需定义三个字段就搞定! contenttypes 是Django内置的一个应用,可以追踪项目中所有app和model的对应关系,并记录在ContentType表中. 每当我们创建了新的model并执行数据库迁移后,ContentType表中就会自动新增一条记录.比如我在应用app的models.py中创建表class Electrics(models.Model): pass…
1.setting配置 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', #数据库驱动名 'NAME': 'my_test', #数据库名称 'USER': 'root', # 用户名 'PASSWORD': '123', #密码 'HOST': '127.0.0.1', #IP地址 'PORT': '3306', # 端口号 2.mysql8.x的错误及解决 错误:_mysql_exceptions.Operati…
Django内置email发送邮件 1.首先在settings.py文件设置相关参数 STATIC_URL = '/static/' # 设置邮件域名 EMAIL_HOST = 'smtp.163.com' # 设置端口号,为数字 EMAIL_PORT = 25 #设置发件人邮箱 EMAIL_HOST_USER = 'xxxxx@163.com' # 设置发件人 授权码 EMAIL_HOST_PASSWORD = '自己的授权码' # 设置是否启用安全链接 EMAIL_USER_TLS = Tr…
第一:命令安装xadmin2 pip install xadmin2 第二:setting.py中设置 INSTALLED_APPS INSTALLED_APPS = ( ... 'xadmin', 'crispy_forms', 'reversion', ... ) 第三:urls.py中设置 import xadmin xadmin.autodiscover() from xadmin.plugins import xversion xversion.register_models() ur…