2018-11-8 19:11:49

打算过几天回学校!

越努力越幸运~!永远不要高估自己!

做一下笔记,等路飞项目做完放上github连接

1. 复杂的跨域

class CORSMiddleware(MiddlewareMixin):
"""
为了解决跨域问题 添加响应头!定义了这个中间件,在settings中配置了
"""
def process_response(self,request,response):
# 添加响应头 # 允许你的域名来获取我的数据
response['Access-Control-Allow-Origin'] = "*" # 允许你携带Content-Type请求头
# response['Access-Control-Allow-Headers'] = "Content-Type" # 允许你发送DELETE,PUT
# response['Access-Control-Allow-Methods'] = "DELETE,PUT" response['Access-Control-Allow-Origin'] = "*"
    # 这是复杂的跨域,浏览器给两次请求,
    # 解决办法就是 报啥错,请求头缺啥,在response中添加啥
if request.method == "OPTIONS":
response['Access-Control-Allow-Headers'] = "Content-Type"
response['Access-Control-Allow-Methods'] = "PUT,DELETE"
return response

2. vue 的拦截器

这个拦截器是vue自带的

在main.js中配置

// router自带的拦截器
router.beforeEach(function (to, from, next) {
if(to.meta.requireAuth){
// 要去的url只有登陆成功后才能访问
if (store.state.token) {
next()
} else {
next({name: 'login',query: {backUrl: to.fullPath}})
}
}else{
next()
}
})

router/index.js中部分代码

就是在你想拦截的路由中加上

meta:{
requireAuth:true
}

例如

  routes: [
{
path: '/index',
name: 'index',
component: Index
},
{
path: '/course',
name: 'course',
component: Course
},
{
path: '/detail/:id',
name: 'detail',
component: Detail
},
{
path: '/micro',
name: 'micro',
component: Micro,
// 需要登录后才能访问
meta:{
requireAuth:true
}
},
{
path: '/news',
name: 'news',
component: News,
// 需要登录后才能访问
meta:{
requireAuth:true
}
},
{
path: '/login',
name: 'login',
component: Login
},
],
mode:'history'
})

3.使用了rest_framework的认证组件

auth.py

from rest_framework.authentication import BaseAuthentication
from rest_framework.exceptions import AuthenticationFailed
from app01 import models class LuffyAuth(BaseAuthentication):
"""
使用rest_framework自带的认证组件,自己的类继承BaseAuthentication,重写父类方法
使用的时候直接写个列表就好
authentication_classes = [LuffyAuth, ]
"""
def authenticate(self, request):
token = request.query_params.get('token')
obj = models.UserToken.objects.filter(token=token).first()
if not obj:
raise AuthenticationFailed({'code': 1001, 'error': '认证失败'})
return (obj.user.user, obj)

然后是组件的使用views.py

class MicroView(APIView):
# 使用写好的认证组件
authentication_classes = [LuffyAuth, ] def get(self, request, *args, **kwargs):
ret = {'code': 1000, 'title': '微职位'}
return Response(ret)

4. 创建一个随机字符串的方法 也就是 创建一个随机token的方法

import uuid

uid = str(uuid.uuid4())

其他的也没什么啦!

贴上笔记! 还有笔记回顾好多都是面试题!有空的时候整理一下!!

s9day106

内容回顾:
1. 你理解的Http协议?
- 建立在tcp之上
- 一次请求一次响应然后断开连接(无状态、短连接)
- 请求和响应
发送:请求头\r\n\r\n请求体
host:www.luffy.com\r\ncontent-type:application/json\r\n\r\n请求体
响应:响应头\r\n\r\n响应体
...
2. django请求生命周期 3. wsgi 4. django中间件是什么? 5. 使用中间件做过什么?
- 内置
- csrf
- session
- 自定义
- 登录认证
- 权限
- cors
6. 中间件中有多少个方法?
5个 7. FBV和CBV是什么?以及优缺点。 8. rest api 9. django rest framework框架 10. 视图常见的继承
from rest_framework.views import APIView # *
from rest_framework.generics import GenericAPIView
from rest_framework.viewsets import GenericViewSet # as_view
from rest_framework.viewsets import ModelViewSet # * 11. 如何实现的访问频率控制?
匿名用户:无法控制,因为用户可以换代理IP
{
192.168.1.1:[1521223123.232, 1521223122.232, 1521223121.232],
192.168.1.2:[1521223123.232, 1521223122.232, 1521223121.232],
192.168.1.3:[1521223123.232, 1521223122.232, 1521223121.232],
192.168.1.4:[1521223123.232, 1521223122.232, 1521223121.232],
192.168.1.5:[1521223123.232, 1521223122.232, 1521223121.232],
192.168.1.6:[1521223123.232, 1521223122.232, 1521223121.232],
} 登录用户:如果有很多账号,也无法限制
{
alex:[1521223123.232, 1521223122.232, 1521223121.232],
eric:[1521223123.232, 1521223122.232, 1521223121.232],
} 参考源码:from rest_framework.throttling import SimpleRateThrottle 12. 序列化
- source
- method 今日内容:
1. 示例
- 推荐课程
- 用户登录
- 拦截器 VUE:
- 课程列表:this.$axios + this
- 课程详细:this.$axios + this
- 用户登录:
- this.$axios
- this
- 跨域简单和复杂请求
- vuex做全局变量
- vuex-cookies
- 微职位
- 拦截器
- 携带token PS: api可以同一放在store中保存 API:
- 课程列表
- 序列化:source='get_level_display'
- 课程详细:
- 序列化:source='get_level_display'
- 序列化:method
- 用户登录
- update_or_create
- 微职位
- 认证组件 关联组件:
- 版本
- 解析器
- 渲染器
- 序列化
- 认证组件
- 视图
- 路由 2. django组件:contenttype
组件的作用:可以通过两个字段让表和N张表创建FK关系 表结构:
from django.db import models
from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes.fields import GenericForeignKey, GenericRelation class DegreeCourse(models.Model):
"""学位课程"""
name = models.CharField(max_length=128, unique=True)
course_img = models.CharField(max_length=255, verbose_name="缩略图")
brief = models.TextField(verbose_name="学位课程简介", ) class Course(models.Model):
"""专题课程"""
name = models.CharField(max_length=128, unique=True)
course_img = models.CharField(max_length=255) # 不会在数据库生成列,只用于帮助你进行查询
policy_list = GenericRelation("PricePolicy") class PricePolicy(models.Model):
"""价格与有课程效期表"""
content_type = models.ForeignKey(ContentType) # 关联course or degree_course
object_id = models.PositiveIntegerField() #不会在数据库生成列,只用于帮助你进行添加和查询
content_object = GenericForeignKey('content_type', 'object_id') valid_period_choices = (
(1, '1天'),
(3, '3天'),
(7, '1周'), (14, '2周'),
(30, '1个月'),
(60, '2个月'),
(90, '3个月'),
(180, '6个月'), (210, '12个月'),
(540, '18个月'), (720, '24个月'),
)
valid_period = models.SmallIntegerField(choices=valid_period_choices)
price = models.FloatField() 使用:
# 1.在价格策略表中添加一条数据
# models.PricePolicy.objects.create(
# valid_period=7,
# price=6.6,
# content_type=ContentType.objects.get(model='course'),
# object_id=1
# ) # models.PricePolicy.objects.create(
# valid_period=14,
# price=9.9,
# content_object=models.Course.objects.get(id=1)
# ) # 2. 根据某个价格策略对象,找到他对应的表和数据,如:管理课程名称
# price = models.PricePolicy.objects.get(id=2)
# print(price.content_object.name) # 自动帮你找到 # 3.找到某个课程关联的所有价格策略
# obj = models.Course.objects.get(id=1)
# for item in obj.policy_list.all():
# print(item.id,item.valid_period,item.price)
# 3. 表结构 明天说

11.8luffycity(3)的更多相关文章

  1. 地区sql

    /*Navicat MySQL Data Transfer Source Server : localhostSource Server Version : 50136Source Host : lo ...

  2. WinForm 天猫2013双11自动抢红包【源码下载】

    1. 正确获取红包流程 2. 软件介绍 2.1 效果图: 2.2 功能介绍 2.2.1 账号登录 页面开始时,会载入这个网站:https://login.taobao.com/member/login ...

  3. C++11特性——变量部分(using类型别名、constexpr常量表达式、auto类型推断、nullptr空指针等)

    #include <iostream> using namespace std; int main() { using cullptr = const unsigned long long ...

  4. CSS垂直居中的11种实现方式

    今天是邓呆呆球衣退役的日子,在这个颇具纪念意义的日子里我写下自己的第一篇博客,还望前辈们多多提携,多多指教! 接下来,就进入正文,来说说关于垂直居中的事.(以下这11种垂直居中的实现方式均为笔者在日常 ...

  5. C++ 11 多线程--线程管理

    说到多线程编程,那么就不得不提并行和并发,多线程是实现并发(并行)的一种手段.并行是指两个或多个独立的操作同时进行.注意这里是同时进行,区别于并发,在一个时间段内执行多个操作.在单核时代,多个线程是并 ...

  6. CSharpGL(11)用C#直接编写GLSL程序

    CSharpGL(11)用C#直接编写GLSL程序 +BIT祝威+悄悄在此留下版了个权的信息说: 2016-08-13 由于CSharpGL一直在更新,现在这个教程已经不适用最新的代码了.CSharp ...

  7. ABP(现代ASP.NET样板开发框架)系列之11、ABP领域层——仓储(Repositories)

    点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之11.ABP领域层——仓储(Repositories) ABP是“ASP.NET Boilerplate Proj ...

  8. C++11 shared_ptr 智能指针 的使用,避免内存泄露

    多线程程序经常会遇到在某个线程A创建了一个对象,这个对象需要在线程B使用, 在没有shared_ptr时,因为线程A,B结束时间不确定,即在A或B线程先释放这个对象都有可能造成另一个线程崩溃, 所以为 ...

  9. C++11网络编程

    Handy是一个简洁优雅的C++11网络库,适用于linux与Mac平台.十行代码即可完成一个完整的网络服务器. 下面是echo服务器的代码: #include <handy/handy.h&g ...

随机推荐

  1. @RequestBody, @ResponseBody 注解详解(转)

    原文地址: https://www.cnblogs.com/qq78292959/p/3760651.html @RequestBody, @ResponseBody 注解详解(转) 引言: 接上一篇 ...

  2. one-stage object detectors(1)

    2019/04/08 强烈推荐:深入理解one-stage目标检测算法 yolo系列 one-stage object detectors(YOLO and SSD) 在不专一的模型中,每个检测器应该 ...

  3. Java通过SMS短信平台实现发短信功能

    在项目中使用过发短信的功能,但那个由于公司内部的限制很麻烦,今天在网上找到一个简单的,闲来无事就把它记录如下: 本程序是通过使用中国网建提供的SMS短信平台实现的(该平台目前为注册用户提供5条免费短信 ...

  4. linux下rocksdb的编译安装

    RocksDB起源于Facebook的实验室项目,实现了一个高性能的快速存储器,是基于C++编写的key value数据库,很多软件都是采用内置rocksdb的方式运行,所以需要我们提前安装rocks ...

  5. tensorflow创建自定义 Estimator

    https://www.tensorflow.org/guide/custom_estimators?hl=zh-cn 创建自定义 Estimator 本文档介绍了自定义 Estimator.具体而言 ...

  6. $.contents().find设置的data在iframe子页面无法获取值

    <iframe src="iframe16.html" id="iframe16" name="iframe16"></i ...

  7. 找回停掉docker的文件

    如果容器还能重启,就restart, 如果状态是DEAD的话, Error response from daemon: Container is marked for removal and cann ...

  8. boost::filesystem经常使用使用方法具体解释

    提示: filesystem库提供了两个头文件,一个是<boost/filesystem.hpp>,这个头文件包括基本的库内容.它提供了对文件系统的重要操作. 同一时候它定义了一个类pat ...

  9. 远程FTP下载文件

    现在存在以下环境: 远程服务器:192.168.1.107 用户名:dt 密码:dt123 需要从该服务器上下载文件到本地 1.登录(进入到那个目录登录的 ,文件就会被下载到该文件) ftp 192. ...

  10. CNN(卷积神经网络)、RNN(循环神经网络)、DNN,LSTM

    http://cs231n.github.io/neural-networks-1 https://arxiv.org/pdf/1603.07285.pdf https://adeshpande3.g ...