摘要: 1. 获取镜像 可以利用已有的FastDFS Docker镜像来运行FastDFS。 获取镜像可以通过下载 docker image pull delron/fastdfs 也可是直接使用提供给大家的镜像备份文件 docker load -i 文件路径/fastdfs_docker.tar 加载好镜 阅读全文
posted @ 2019-11-12 19:56 阿磊小哥哥呀 阅读(91) 评论(0) 推荐(0)
摘要: 1. 在Ubuntu中安装Docker 更新ubuntu的apt源索引 sudo apt-get update 安装包允许apt通过HTTPS使用仓库 sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ soft 阅读全文
posted @ 2019-11-12 19:55 阿磊小哥哥呀 阅读(89) 评论(0) 推荐(0)
摘要: 创建容器 docker run [option] 镜像名 [向启动容器中传入的命令] 常用可选参数说明: -i 表示以“交互模式”运行容器 -t 表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即 分配一个伪终端。 --name 为创建的容器命名 -v 表示目录映射关系(前者是 阅读全文
posted @ 2019-11-12 19:55 阿磊小哥哥呀 阅读(117) 评论(0) 推荐(0)
摘要: 相关环境安装 以下操作都在远程服务器上进行操作 (ubuntu 16.04) 先更新 apt 相关源 sudo apt-get update mysql安装 apt-get install mysql-server apt-get install libmysqlclient-dev redis安装 阅读全文
posted @ 2019-11-12 19:53 阿磊小哥哥呀 阅读(188) 评论(0) 推荐(0)
摘要: 部署 1. 静态文件 当Django运行在生产模式时,将不再提供静态文件的支持,需要将静态文件交给静态文件服务器。 我们先收集所有静态文件。项目中的静态文件除了我们使用的front_end_pc中之外,django本身还有自己的静态文件,如果rest_framework、xadmin、admin、c 阅读全文
posted @ 2019-11-12 19:50 阿磊小哥哥呀 阅读(148) 评论(0) 推荐(0)
摘要: django在进行数据库操作的时候,读取数据与写数据(增、删、改)可以分别从不同的数据库进行操作。 1. 在配置文件中增加slave数据库的配置 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'HOST': '10. 阅读全文
posted @ 2019-11-12 19:48 阿磊小哥哥呀 阅读(96) 评论(0) 推荐(0)
摘要: 在Django配置文件中,设置邮箱的配置信息 EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' EMAIL_HOST = 'smtp.163.com' EMAIL_PORT = 25 #发送邮件的邮箱 EMAIL_HOST_U 阅读全文
posted @ 2019-11-12 19:47 阿磊小哥哥呀 阅读(90) 评论(0) 推荐(0)
摘要: 使用Celery完成发送短信 在meiduo/meiduo_mall下创建celery_tasks用于保存celery异步任务。 在celery_tasks目录下创建config.py文件,用于保存celery的配置信息 broker_url = "redis://127.0.0.1/14" 在ce 阅读全文
posted @ 2019-11-12 19:45 阿磊小哥哥呀 阅读(83) 评论(0) 推荐(0)
摘要: 跨域CORS 我们为前端和后端分别设置了两个不同的域名 位置域名 前端 www.meiduo.site 后端 api.meiduo.site 现在,前端与后端分处不同的域名,我们需要为后端添加跨域访问的支持。 我们使用CORS来解决后端对跨域访问的支持。 使用django-cors-headers扩 阅读全文
posted @ 2019-11-12 19:44 阿磊小哥哥呀 阅读(100) 评论(0) 推荐(0)
摘要: 我们在验证完用户的身份后(检验用户名和密码),需要向用户签发JWT,在需要用到用户身份信息的时候,还需核验用户的JWT。 关于签发和核验JWT,我们可以使用Django REST framework JWT扩展来完成。 文档网站http://getblimp.github.io/django-res 阅读全文
posted @ 2019-11-12 19:42 阿磊小哥哥呀 阅读(85) 评论(0) 推荐(0)
摘要: 配置 1. 修改settings/dev.py 文件中的路径信息 我们将Django的应用放到了 工程目录/meiduo_mall/apps目录下,如果创建一个应用,比如users,那么在配置文件的INSTALLED_APPS中注册应用应该如下: INSTALLED_APPS = [ ... 'me 阅读全文
posted @ 2019-11-12 19:37 阿磊小哥哥呀 阅读(98) 评论(0) 推荐(0)
摘要: apps 存放Django的应用 libs 存放第三方的库文件 settings 存放配置文件的目录,分为开发dev和线上prod utils 存放项目自己定义的公共函数或类等 docs 用于存放一些说明文档资料 scripts 用于存放管理脚本文件 阅读全文
posted @ 2019-11-12 19:33 阿磊小哥哥呀 阅读(76) 评论(0) 推荐(0)
摘要: 安装node.js的版本控制工具nvm,在终端中执行 curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash 重新进入终端,使用nvm安装最新版本的node.js nvm install 阅读全文
posted @ 2019-11-12 19:32 阿磊小哥哥呀 阅读(431) 评论(0) 推荐(0)
摘要: 1. 安装依赖 REST framewrok生成接口文档需要coreapi库的支持。 pip install coreapi 2. 设置接口文档访问路径 在总路由中添加接口文档路径。 文档路由对应的视图配置为rest_framework.documentation.include_docs_urls 阅读全文
posted @ 2019-11-12 19:29 阿磊小哥哥呀 阅读(194) 评论(0) 推荐(0)
摘要: REST framework提供了异常处理,我们可以自定义异常处理函数。 from rest_framework.views import exception_handler def custom_exception_handler(exc, context): # 先调用REST framewor 阅读全文
posted @ 2019-11-12 19:28 阿磊小哥哥呀 阅读(570) 评论(0) 推荐(0)
摘要: 分页Pagination REST framework提供了分页的支持。 我们可以在配置文件中设置全局的分页方式,如: REST_FRAMEWORK = { 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagina 阅读全文
posted @ 2019-11-12 19:27 阿磊小哥哥呀 阅读(106) 评论(0) 推荐(0)
摘要: 限流Throttling 可以对接口访问的频次进行限制,以减轻服务器压力。 使用 可以在配置文件中,使用DEFAULT_THROTTLE_CLASSES 和 DEFAULT_THROTTLE_RATES进行全局配置, REST_FRAMEWORK = { 'DEFAULT_THROTTLE_CLAS 阅读全文
posted @ 2019-11-12 19:26 阿磊小哥哥呀 阅读(451) 评论(0) 推荐(0)
摘要: 可以在配置文件中配置全局默认的认证方案 REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': ( 'rest_framework.authentication.BasicAuthentication', # 基本认证 'rest_framework 阅读全文
posted @ 2019-11-12 19:23 阿磊小哥哥呀 阅读(226) 评论(0) 推荐(0)
摘要: REST framework提供了两个router SimpleRouter DefaultRouter 1. 使用方法 1) 创建router对象,并注册视图集,例如 from rest_framework import routers router = routers.SimpleRouter( 阅读全文
posted @ 2019-11-12 19:21 阿磊小哥哥呀 阅读(148) 评论(0) 推荐(0)
摘要: 使用视图集ViewSet,可以将一系列逻辑相关的动作放到一个类中: list() 提供一组数据 retrieve() 提供单个数据 create() 创建数据 update() 保存数据 destory() 删除数据 ViewSet视图集类不再实现get()、post()等方法,而是实现动作 act 阅读全文
posted @ 2019-11-12 19:19 阿磊小哥哥呀 阅读(253) 评论(0) 推荐(0)
摘要: 1. 两个基类 1)APIView rest_framework.views.APIView APIView是REST framework提供的所有视图的基类,继承自Django的View父类。 APIView与View的不同之处在于: 传入到视图方法中的是REST framework的Reques 阅读全文
posted @ 2019-11-12 19:17 阿磊小哥哥呀 阅读(96) 评论(0) 推荐(0)
摘要: 视图的继承关系: 视图的方法与属性: 阅读全文
posted @ 2019-11-12 19:14 阿磊小哥哥呀 阅读(71) 评论(0) 推荐(0)
摘要: 1. Request REST framework 传入视图的request对象不再是Django默认的HttpRequest对象,而是REST framework提供的扩展了HttpRequest类的Request类的对象。 REST framework 提供了Parser解析器,在接收到请求后会 阅读全文
posted @ 2019-11-12 19:12 阿磊小哥哥呀 阅读(107) 评论(0) 推荐(0)
摘要: 如果我们想要使用序列化器对应的是Django的模型类,DRF为我们提供了ModelSerializer模型类序列化器来帮助我们快速创建一个Serializer类。 ModelSerializer与常规的Serializer相同,但提供了: 基于模型类自动生成一系列字段 基于模型类自动为Seriali 阅读全文
posted @ 2019-11-12 19:11 阿磊小哥哥呀 阅读(83) 评论(0) 推荐(0)
摘要: 1. 验证 使用序列化器进行反序列化时,需要对数据进行验证后,才能获取验证成功的数据或保存成模型类对象。 在获取反序列化的数据前,必须调用is_valid()方法进行验证,验证成功返回True,否则返回False。 验证失败,可以通过序列化器对象的errors属性获取错误信息,返回字典,包含了字段和 阅读全文
posted @ 2019-11-12 19:10 阿磊小哥哥呀 阅读(101) 评论(0) 推荐(0)
摘要: 我们在django shell中来学习序列化器的使用。 python manage.py shell 1 基本使用 1) 先查询出一个图书对象 from booktest.models import BookInfo book = BookInfo.objects.get(id=2) 2) 构造序列 阅读全文
posted @ 2019-11-12 19:07 阿磊小哥哥呀 阅读(105) 评论(0) 推荐(0)
摘要: 定义Serializer 1. 定义方法 Django REST framework中的Serializer使用类来定义,须继承自rest_framework.serializers.Serializer。 例如,我们已有了一个数据库模型类BookInfo class BookInfo(models 阅读全文
posted @ 2019-11-12 19:04 阿磊小哥哥呀 阅读(87) 评论(0) 推荐(0)
摘要: 1. 创建序列化器 在booktest应用中新建serializers.py用于保存该应用的序列化器。 创建一个BookInfoSerializer用于序列化与反序列化。 class BookInfoSerializer(serializers.ModelSerializer): """图书数据序列 阅读全文
posted @ 2019-11-12 19:03 阿磊小哥哥呀 阅读(96) 评论(0) 推荐(0)
摘要: DRF需要以下依赖: Python (2.7, 3.2, 3.3, 3.4, 3.5, 3.6) Django (1.10, 1.11, 2.0) DRF是以Django扩展应用的方式提供的,所以我们可以直接利用已有的Django环境而无需从新创建。(若没有Django环境,需要先创建环境安装Dja 阅读全文
posted @ 2019-11-12 19:00 阿磊小哥哥呀 阅读(72) 评论(0) 推荐(0)
摘要: 在序列化与反序列化时,虽然操作的数据不尽相同,但是执行的过程却是相似的,也就是说这部分代码是可以复用简化编写的。 在开发REST API的视图中,虽然每个视图具体操作的数据不同,但增、删、改、查的实现流程基本套路化,所以这部分代码也是可以复用简化编写的: 增:校验请求数据 -> 执行反序列化过程 - 阅读全文
posted @ 2019-11-12 18:59 阿磊小哥哥呀 阅读(69) 评论(0) 推荐(0)
摘要: 简而言之,我们可以将序列化理解为: 将程序中的一个数据结构类型转换为其他格式(字典、JSON、XML等),例如将Django中的模型类对象装换为JSON字符串,这个转换过程我们称为序列化。 如: queryset = BookInfo.objects.all() book_list = [] # 序 阅读全文
posted @ 2019-11-12 18:58 阿磊小哥哥呀 阅读(123) 评论(0) 推荐(0)
摘要: 1. flask中 1. 装饰器 如果有一个函数视图,增加了装饰器。那么这个函数视图就增加了扩展 2. 请求钩子 所有的函数视图,统一增加了钩子的扩展 如果不想对于所有函数统一处理:增加if判断 if 请求路径 in [] 处理 2. django 1. 装饰器 2. 扩展类Mixin 3. 中间件 阅读全文
posted @ 2019-11-12 18:57 阿磊小哥哥呀 阅读(263) 评论(0) 推荐(0)
摘要: 1.增加 bookinfo1 = BookInfo() bookinfo1.save() insert into BookInfo.objects.create() 2. 修改 bookinfo2 = BookInfo.objects.get() update xx set where id = b 阅读全文
posted @ 2019-11-12 18:56 阿磊小哥哥呀 阅读(166) 评论(0) 推荐(0)
摘要: 1. 重写get或者post方法 2. 绑定路由,类视图的as_view url匹配成功之后 1. django调用as_view内部的view 2. view 调用dispatch 3. dispatch 根据你的请求方式 如果是GET,分发到get方法 如果是POST,分发到post方法 装饰器 阅读全文
posted @ 2019-11-12 18:55 阿磊小哥哥呀 阅读(219) 评论(0) 推荐(0)
摘要: 1. 为什么要学类视图 函数视图,类视图? 一个功能中,如果有多个操作,想放到一个视图函数中,可以通过请求方式来区分。 问题:代码可读性比较糟。 Django提供了类视图来解决这个问题。 视图函数 函数视图 类视图 2. 什么是类视图 类视图: 一个类作为一个视图。 from django.view 阅读全文
posted @ 2019-11-12 18:54 阿磊小哥哥呀 阅读(70) 评论(0) 推荐(0)
摘要: 1. 路径传参 : weather/xxx/yyy 步骤: 1. 通过url正则()提取 2. 视图函数形参接受 2. 查询字符串(问号传参) : weather/?k=v request.GET (QueryDict) 以上两种传递数据的方式,都不区分请求方式:get,post 3. body 1 阅读全文
posted @ 2019-11-12 18:53 阿磊小哥哥呀 阅读(357) 评论(0) 推荐(0)
摘要: 1. 创建子应用: python manage.py startapp xxx 2. 安装注册应用: 在项目的settings.py配置文件中配置应用的配置: INSTALLED_APPS = [ 'users.apps.UsersConfig', # 注册安装应用 ] 3. 在views.py中添 阅读全文
posted @ 2019-11-12 18:52 阿磊小哥哥呀 阅读(185) 评论(0) 推荐(0)
摘要: 服务器向用户返回的状态码和提示信息,常见的有以下一些(方括号中是该状态码对应的HTTP动词)。 1)信息告知 - 1xx HTTP_100_CONTINUE HTTP_101_SWITCHING_PROTOCOLS 2)成功 - 2xx HTTP_200_OK HTTP_201_CREATED HT 阅读全文
posted @ 2019-11-12 18:47 阿磊小哥哥呀 阅读(281) 评论(0) 推荐(0)