Django进阶知识

drf学习之Django进阶点

一.Django migrations原理

    1.makemigrattions:

                  相当于在每个app下的migrations文件夹下生成一个py脚本文件用于创建表或则修改表同步modes.py的改动,还未作用到数据库比如0001_initial.py,可以用python manger.py sqlmigrate theapp 0001查看文件中对应的sql命令。

    2.migrate:

                  在每个app下的migrations下查找对应的py文件脚本运行同步到数据库,但做了很多次改变后里面有很对文件如何找到对应的oy文件并且只运行它,这就要依靠django_migrations这张表,里面详细的记录了运行了migrations下的哪些文件,执行migrate时会在这张表中查找运行了哪些文件,如果找到就会跳过不运行。如果执行migrate未执行脚本,有可能已经运行过了,就可以到表中查看对应记录及表删除从新运行。

二.Django信号量

三.Django从请求到响应的完整过程

四.独立使用Django的Model

    1.导入数据:

# _*_ encoding:utf-8 _*_
__author__ = 'LYQ'
__data__ = '2018/8/17 19:30'

#独立使用django的model
import sys
import os

#获取当前脚本文件的目录
pwd=os.path.dirname(os.path.realpath(__file__))
#将项目的根目录加入到搜索路径下 sys.path.append(pwd
+'../')
#如果要单独使用django的model,必须导入django的环境变量,与项目的setting文件一致,django依赖里面的一些设置文件(因为设置了根目录,所以这样就能找到) os.environ.setdefault(
"DJANGO_SETTINGS_MODULE", "Vueshops.settings") import django django.setup() #位置要放对,配置好引入,不然会报错,很多东西还未配置好 from goods.models import GoodsCategory from db_tools.data.category_data import row_data for lev1_cat in row_data: lev1_instance=GoodsCategory() lev1_instance.code=lev1_cat['code'] lev1_instance.name=lev1_cat['name'] lev1_instance.category_type=1 lev1_instance.save() for lev2_cat in lev1_cat['sub_categorys']: lev2_instance = GoodsCategory() lev2_instance.code = lev2_cat['code'] lev2_instance.name = lev2_cat['name'] lev2_instance.category_type = 2 lev2_instance.parent_category=lev1_instance lev2_instance.save() for lev3_cat in lev2_cat['sub_categorys']: lev3_instance = GoodsCategory() lev3_instance.code = lev3_cat['code'] lev3_instance.name = lev3_cat['name'] lev3_instance.category_type = 3 lev3_instance.parent_category = lev2_instance lev3_instance.save()

猜你喜欢

转载自www.cnblogs.com/lyq-biu/p/9626234.html
今日推荐