注意:由于版本 1.7syncdb
命令已弃用。改用. migrate
_
Django 1.7 还引入了AppConfig作为自定义应用程序初始化过程的手段。
因此,从 Django 1.7 开始,实现您想要的最简单的方法是使用AppConfig
的子类。
比方说,您碰巧有自己example_app
的添加到您的INSTALLED_APPS
,并且您想在从头开始运行时创建和使用管理员密码的管理员用户。我还假设只有在开发环境中才需要自动创建管理员用户 - 而不是在生产环境中。./manage.py migrate
将以下代码添加到example_app/apps.py
# 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)
还要在应用程序中添加以下对应用程序配置的引用example_app/__init__.py
:
# example_app/__init__.py
default_app_config = 'example_app.apps.ExampleAppConfig'
其中 default_app_config 是此处AppConfig
提到的子类的字符串 Python 路径。