• Django Rest Framework 实战


    慕课网 vue +Django restful framework 电商实战
    • 开发及项目搭建
      • 开发环境搭建
        • pycharm
        • 虚拟环境
        • mysql  navicat
        • mysql 绑定ip 0.0.0.0.后多人访问,需设置权限,否则仅本地可连
          • GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
      • 前端的开发环境搭建
        • webstorm
        • nodejs
        • cnpm     npm install -g cnpm --registry=https://registry.npm.taobao.org
        • 运行起来
      • 进入前端代码目录 online-store 输入 
        • cnpm install  会在当前目录生成 node_modules  文件夹,所有的依赖文件都会存放在这个夹
        • 安装完依赖后,输入cnpm run dev
        • 项目已运行在本机8080 端口上
      • Django 2.0
      • git 代码托管  托管私有项目,共有项目免费托管  ,github
      • 命令行创建虚拟环境
        • mkvirtualenv -p xxxxx/python.exe(python 安装路径)  myvirtualenv(虚拟环境名)
        • pip install djangorestframework
        • pip install django
        • pip install markdown
        • pip install django-filter
      • add 'rest_framework' to your INSTALLED_APPS setting.
    • mysql 配置
      • DATABASES = {
      • 'default': {
      • 'ENGINE': 'django.db.backends.mysql',
      • 'NAME': 'GP1Day15',
      • 'USER':'root',
      • 'PASSWORD':'huawei@1234',
      • 'HOST':'localhost',
      • 'PORT':3306
    • mysql 驱动安装
      • import pymysql
      • pymysql.install_as_MySQLdb()
    • 慕学
      • 安装mysqlclient pip install mysqlclient
    •     Mysql 建库
      • 命令行   create database MyMX default charset=utf8;
    • 安装处理图片的包
    • 新建包  apps   把原先的user 拖进去
    • 新建包 extra_apps  放置第三方包  ,对第三方包进行修改,随项目打包
    • 新建media 文件夹
    • 新建templates 文件夹  防止静态文件
    • 新建文件夹 db_tools  初始化脚本
    • 将apps 和extra_apps 设置成source derectory   方便导入包
    • 将BASE_DIR apps  extra_apps 加入搜索路径
      • setting 文件中
        • import sys
        • sys.path.insert(0,BASE_DIR)
        • sys.path.insert(0,os.path.join(BASE_DIR,'apps'))
        • sys.path.insert(0,os.path.join(BASE_DIR,'extra_apps'))
    • 项目设计思路
      • 根据前端页面进行分类,确定app  (users,goods,trade,user_operation)
      • 设计user的model
        • users
      
          • 对应字段
            • 继承AbstractUser model 将用户的基本字段继承,再添加一些字段
            • 在setting 里添加 AUTH_USER_MODEL = 'users.UserProfile'  覆盖系统本省的用户model
     
      • goods model 的设计
        • 用到了富文本  DjangoUeditor(做了修改不支持3.6)
     
     
      • 将DjangoUeditor 拷入到 extra_apps
      • 在settiing 中注册 app
        • DjangoUeditor
        • users
        • goods
        • trade
        • user_operation
      • 将源代码中xadmin 拷贝到 extra_apps  (做了修改,兼容3.6)
      • 在setting  中注册crispy_forms  和xadmin
      • 在github 上搜索xadmin 找到 requirements.txt pip install xadmin 的相关依赖
      • 修改总路由
      • 创建超级管理员
        • python manage.py createsuperuser
      • 在apps.py 中增加verbose_name ="中文名",就可以在Xadmin 视图中显示中文
      • 导入数据
        • 把 media 目录中的goods copy 到media 文件夹 ,里面都是图片
        • 将media brands 拷贝到 同目录,也是图片
        • 将db_tools 中的两个文件  category_data product_data 拷贝到同目录
        • 在db_tools 建立 data 目录  ,把上面两个文件拖进去
        • 运行import_category_data  import_product_data  插入数据
      • setting 中配置MEDIA_ROOT = os.path.join(BASE_DIR,"media")
      • 在url.py 中
        •  
      • 商品详情无法展示,注释
          • render() got an unexpected keyword argument 'renderer' 

          • 注释掉 boundfield.py 中的 renderer=self.form.renderer  富文本可访问了
      • 前后端分离优缺点
     
     
    • Restfull 实战
      • 文档
        • pip install coreapi
        • 在总url 中 增加
        • from rest_framework.documentation import include_docs_urls
        • re_path(r'docs/',include_docs_urls(title="慕学生鲜"))
        • 在setting 中注册,rest-framework app
        • 在UR;添加path('api-auth',include('rest_framework.urls',namespace='rest-framework')),
    • 配置路由
    • 设置分页
    • 模型间关系,自己画图理清楚
     
    • 过滤
      • 重写 get_queryset 方法
      • 使用restfull 的filter 模块
    • 浏览器跨域
     
     
    • jwt  
      • 安装pip install djangorestframework-jwt
      • setting 配置
      • url 配置
      • setting 中增加参数 AUTHENTICATION_BACKENDS
      • 增加JWT_AUTH
      •  
    • 发送短信
      • 云片网
      • 在云片网设置ip白名单,仅允许指定的ip 发送短信
    • signals
      • post_save()
        • create_auth_token
        • 在apps 中重写 ready  函数
    • drf 的缓存机制
      • pip  install drf-extensions
      • 用于 get 返回列表和详情页
      • 继承 CacheResponseMixin ,并将 其放在继承的首位(list 和 retrieve 之前)
      • 服务器重启后数据丢失,存在内存中,不适合分布式开发
    • 限流
      • setting  
      • 以用户的session 或标识来判断, UserRyteThrottle
      • 以用户的IP 来限制
        • AnonRateThrottle 
      • 第三方登录
    • 使用框架实现第三方登录跳转
      • pip install social-auth-app-django
      • setting 里做好相关配置,配置路由  path('', include('social_django.urls', namespace='social')),
      • 访问时会先在cookie 里面找 user  ,找到就直接登录,找不到就创建一个  mymx.social_auth_usersocialauth ,和user 表里
      • 第三方认证只会帮我们跳转到指定的界面,未登录状态,需要重写 social_core ,设置将 ursername 和token 保存到 cookie 中
      • 127.0.0.1:8000/login/webo/ 即可跳转微博登录界面,填好后会已登录状态重定向到 redirect_url
     
    • sentry  错误日志生成系统
      • github 上有
     
    开启 https
     
     
     
    • 安全随机数
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    详解java定时任务
    Java之Exception
    Java设计模式
    Java中的static关键字解析
    浅析Java中的final关键字
    深入理解Java的接口和抽象类
    一个故事讲清楚NIO
    Java并发编程:线程池的使用
    Java垃圾回收机制
    ubuntu sublime text 2 破解版
  • 原文地址:https://www.cnblogs.com/nancyfeng/p/13577963.html
Copyright © 2020-2023  润新知