注意:自1.7版syncdb
命令已弃用。使用migrate
代替。
Django 1.7还引入了AppConfig作为自定义应用程序初始化过程的方式。
因此,自Django 1.7起,实现所需目标的最简单方法是采用AppConfig
的子类。
假设您碰巧将自己example_app
的添加到您的计算机中,INSTALLED_APPS
并且无论何时从头开始运行,您都希望使用管理员密码创建和管理用户。我还假设仅在开发环境中才需要自动创建管理员用户,而在生产环境中则不需要。./manage.py migrate
将以下代码添加到 example_app/apps.py
from django.apps import AppConfig
from django.conf import settings
from django.db.models.signals import post_migrate
from django.contrib.auth.apps import AuthConfig
USERNAME = "admin"
PASSWORD = "admin"
def create_test_user(sender, **kwargs):
if not settings.DEBUG:
return
if not isinstance(sender, AuthConfig):
return
from django.contrib.auth.models import User
manager = User.objects
try:
manager.get(username=USERNAME)
except User.DoesNotExist:
manager.create_superuser(USERNAME, 'x@x.com', PASSWORD)
class ExampleAppConfig(AppConfig):
name = __package__
def ready(self):
post_migrate.connect(create_test_user)
还要在apps内部添加以下对app配置的引用example_app/__init__.py
:
default_app_config = 'example_app.apps.ExampleAppConfig'
凡default_app_config是一个字符串的Python路径AppConfig
子提到这里。
syncdb
为支持数据迁移已弃用