慕课网 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;
-
安装处理图片的包
-
pip install -i https://pypi.douban.com/simple pillow
-
新建包 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 的相关依赖
-
django>=1.9.0django-crispy-forms>=1.6.0django-import-export>=0.5.1django-reversion>=2.0.0django-formtools==1.0future==0.15.2httplib2==0.9.2six==1.10.0
-
pip install django-crispy-forms
-
pip install future
-
将six.py 复制到 d jango/utils
-
总会遇到很多问题的,一步步安装吧
-
修改总路由
-
创建超级管理员
-
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 api
-
理解restful 架构
-
Vue
-
前端工程化
-
数据双向绑定 mvvm
-
组件化开发
-
vue 全家桶
-
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 模块
-
浏览器跨域
-
pip install django-cors-headers
-
setting 安装app 'corsheaders',
-
中间件 corsheaders.middleware.CorsMiddleware
-
setting 增加参数CORS_ORIGIN_ALLOW_ALL=True,默认为False
-
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
-
安全随机数