Django REST framework 认证和权限组件 认证与权限组件身份验证是将传入请求与一组标识凭据(例如请求来自的用户或其签名的令牌)相关联的机制。然后 权限 和 限制 组件决定是否拒绝这个请求。 简单来说就是: 认证确定了你是谁 权限确定你能不能访问某个接口 限制确定你访问某个接口的频率 一、认证组件REST framework 提供的开箱即用的身份验证方案REST framework 提供了一些开箱即用的身份验证方案,并且还允许你实现自定 2021-08-18 Python > Django > DRF #Python #Django #DRF
Django REST framework 频率组件 频率限制组件DRF内置了基本的限制类,首先我们自己动手写一个限制类,熟悉下限制组件的执行过程。 默认配置123REST_FRAMEWORK = { 'DEFAULT_THROTTLE_CLASSES': [],} 自定义限制类123456789101112131415161718192021222324252627282930313233VISIT_RECORD = & 2021-08-18 Python > Django > DRF #Python #Django #DRF
JavaScript Promise 1、背景众所周知,JS是一个单线程语言,即同一时间只能做一件事情。而单线程就意味着所有任务需要排队,前一个任务结束,才会执行后一个任务。 由于这个“缺陷”,导致 JavaScript 的所有网络操作,浏览器事件,都必须是异步执行。异步执行可以用回调函数实现。比如我们想获取一个文件的内容并处理 123456function getFileByPath(fpath) { fs.read 2021-08-11 frontend > JavaScript #JavaScript #frontend
Vue axios 拦截器和 router 导航守卫的区别 导航守卫导航守卫只能在前端路由发生变化时作出判断,此时不一定会发起 ajax 请求,比如 检查请求头中是否带有token,但是不能判断token是否失效 判断该路由的访问,该用户是否需有权限登录该页面 axios 拦截器拦截的是 ajax 的请求 2021-08-11 Vue #Vue
Vue message this.message 弹出消息 示例 1234567this.$message({ message:"这是弹框消息", type:"success" }) // orthis.$message.success("这是弹框消息") 除了 success 之外,还有取值 warning(警告)/info(消息)/error(错误); 2021-08-11 Vue #Vue
Vue 使用 vscode 打包 第一步:进入Visual Studio Code界面,选择文件→首选项→设置 第二步: 如果设置显示的是 settings.json 文件,输入:”npm.enableScriptExplorer”:true,保存 如果设置显示的是图形界面,则找到 Enable Run From Folder 设置为选中 第三步:重启Visual Studio Code,重新进入界面,在左侧边菜单栏底部 2021-08-11 Vue #Vue
Vue 前后端分离跨域 因为前后端属于不同的域,导致每次ajax请求服务器都会当做新的用户访问,导致session丢失 解决方法 后端后端设置允许跨域,下面示例为 flask 12345678910111213@app.after_requestdef af_request(resp): """ #请求钩子,在所有的请求发生后执行,加入headers。 :param resp: :return: 2021-08-11 Vue #Vue
Vue-Router 之 1 route 和 router this.$route: 当前激活的路由的信息对象。每个对象都是局部的,可以获取当前路由的 path, name, params, query 等属性。 this.$router:全局的 router 实例。通过 Vue 根实例中注入 router 实例,然后再注入到每个子组件,从而让整个应用都有路由功能。其中包含了很多属性和对象(比如 history 对象),任何页面也都可以调用其 push( 2021-08-11 Vue #Vue
Vue-Router 之 2 router.addRoutes 动态添加路由 语法123router.addRoutes([路由配置对象])// 或者this.$router.addRoutes([路由配置对象]) Vue-router 的动态添加子路由的注意事项 格式必须为数组的形式。 addRoutes添加的路由必须为一级路由。 切莫用JSON方法深copy路由对象 把动态的路由也添加到 $router.options.routes 里 1. 格式必须为数组的形式 2021-08-11 Vue #Vue
Vue-Router 之 3 动态路由 动态路由实现方式前端控制 不用后端帮助,路由表维护在前端 逻辑相对比较简单,比较容易上手 后端控制 相对更安全一点 路由表维护在数据库 一、前端控制思路:在路由配置里,通过meta属性,扩展权限相关的字段,在路由守卫里通过判断这个权限标识,实现路由的动态增加,及页面跳转;如:我们增加一个role字段来控制角色 具体方案: 根据登录用户的账号,返回前端用户的角色 前端根据用户的角色,跟 2021-08-11 Vue #Vue
Vue-Router 之 4 导航守卫 Vue-router 提供的导航守卫主要用来通过跳转或取消的方式守卫导航。这里有很多方式植入路由导航中:全局的,单个路由独享的,或者组件级的。 全局前置守卫 router.beforeEach使用场景: 跳转前需要做校验的地方,如:进入首页前做登录校验,如果已登录则跳转首页,否则跳转登录页。需要写在main.js文件中,表示在所有路由被访问之前做校验; 动态生成路由,在访问之前动态获取路由信息并 2021-08-11 Vue #Vue
Vue-Router 实现原理之 Vue 修改了 url,但是没有发送请求 前端路由概念通过改变 URL,在不重新请求页面的情况下,更新页面视图。 vue-Router 两种模式更新视图但不重新请求页面,是前端路由原理的核心之一,目前在浏览器环境中这一功能的实现主要有 2 种方式: Hash:默认值,利用 URL 中的hash(“#”) http://localhost:8080/#/login history:利用URL中的路径(/home) http:// 2021-08-11 Vue #Vue
Vue-resource 和 vue-axios 拦截器 拦截器简介顾名思义,拦截器主要是拦截,放到 Vue 里面指对 Vue 发出的 http 请求和响应进行拦截,并可以对拦截的请求或响应做一些特殊的处理 拦截器能做的 添加统一的request的参数 比如header中加入 X-Requested-With,比如客户端需要实现sign和token的验证机制,比如你可以写 $http.get('/files', params),拦截器帮 2021-08-11 Vue #Vue
axios 官网地址:http://www.axios-js.com/zh-cn/docs 什么是 axios?Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。 特性 从浏览器中创建 XMLHttpRequests 从 node.js 创建 http 请求 支持 Promise API 拦截请求和响应 转换请求数据和响应数据 取消请求 自动转换 JSON 数 2021-08-11 nodejs #nodejs
vue 脚手架创建项目 1、前期准备 检查 node 是否安装 检查 npm 是否安装 12npm -vnode -v 2、设置国内源,这样你的下载速度会非常快:1234npm config set registry https://registry.npm.taobao.org// 查看源npm config list 3、安装 vue 和一些相关组件1234npm install @vue/cli -g// 2021-08-11 Vue #Vue
vue 配置文件 vue.config.js vue-config-js 官网简介 vue.config.js 简介vue-cli 脚手架搭建完成后,项目目录中没有 vue.config.js 文件,需要手动创建。 vue.config.js 是一个可选的配置文件,如果项目的根目录(和 package.json 同级)中存在这个文件,那么它会被 @vue/cli-service 自动加载。你也可以使用 package.json 中的 2021-08-11 Vue #Vue
Vue 插槽 1、element-UI 中如何获取当前行数据?123456<el-table-column prop label="操作"> <template slot-scope="scope"> <span class="edit"></span> <span class="delete" @click.prevent="deleteRo 2021-08-10 Vue #Vue
Django + uWSGI + Nginx 生产环境部署 官方文档:https://uwsgi-docs.readthedocs.io/en/latest/Options.html 背景如何在生产上部署 Django? Django的部署可以有很多方式,采用 Nginx+uwsgi 的方式是其中比较常见的一种方式。 概念介绍为什么需要web协议开发出的应用程序需要和服务器程序配合,才能为用户提供服务。但是不同的框架有不同的开发方式,需要有一种协议 2021-08-08 Python > Django #Python #Django
Django ORM 合并查询集 在用python或者django写一些小工具应用的时候,有可能会遇到合并多个list到一个 list 的情况。单纯从技术角度来说,处理起来没什么难度,能想到的办法很多,但我觉得有一个很简单而且效率比较高的方法是我以前没注意到的。那就是利用 chain 方法来合并多个list. 同样也可以用来合并django 的 QuerySet. 1. 用 | 合并多个 QuerySet12345678910 2021-08-08 Python > Django #Python #Django
Django ORM 模型动态修改参数,增加 filter 字段 123456789101112131415161718192021222324kwargs = {# 动态查询的字段} # 选择deleted_datetime为空的记录if exclude_deleted:kwargs[ 'deleted_datetime__isnull' ] = True # 选择特的categoryif category is not None:kwar 2021-08-08 Python > Django #Python #Django