我想创建一个公共的django-package,可以在其它 django项目中引用 。
用cookiecutter创建一个django package项目
cookiecutter https://github.com/pydanny/cookiecutter-djangopackage.git
里面会自动生成一个modelmodels.py
# -*- coding: utf-8 -*-
from django.db import models
from model_utils.models import TimeStampedModel
class conf(TimeStampedModel):
pass
但是生成的文件目录结构中,不像其它 django项目,会有manage.py,然后可以通过
python manage.py makemigrations
python manage.py migrate
创建数据库迁移脚本,然后在在数据库中创建相应的表。
但是在这个package项目中,并没有manage.py文件。
那我这个model,怎么创建迁移脚本呢?
我的目的,是想创建一个类似于django.contrib.auth这样的包,auth这个包,在其它 django项目中引用 之后,可以在其它Django应用中,通过python manage.py migrate
直接创建Auth中的user/group等表。我要是想让我自己的package包,也有这种效果,怎么做呢?
你可以自己写一个startproject命令
我写了一个flask的startproject: mana
大概的思路如下
你本地写一个项目原型(你可以加上manage.py, 带Auth的User model)
然后考虑动态的部分(生成项目可能会改变的部分, 比如:项目名称), 将动态的部分使用类似
#{{ xxx }}
的注解格式标记然后编写命令(推荐click), 关键就是使用python os.walk 遍历你的原型(需要注意使用绝对路径) 复制到你生成的项目中, 动态的部分读文件替换
#{{ xxx }}
.这样你就可以
cookiecutter 是一个脚手架, 如果它的功能你不满意可以自己写一个.