サーバーがリクエストごとではなくスピンアップしたときにこのコードを実行したかったのですが、このソリューションはまさにそれを行っているようです。Djangoの管理者を使用してユーザーを管理するというアイデアが好きで、データベースからユーザー名と電子メールを取得しているため、コードでユーザーの情報を公開することを心配する必要がないため、ADMINSをハードコーディングしたくありません.
アプリケーションで admins.py というファイルを作成し、 init .py でそのファイルをインポートしてコードを実行しました。ユーザーが is_superuser の場合、その情報は ADMINS に自動的に追加されます。
myapp.core. 初期化.py
from myapp.core.admins import *
myapp.core.admins.py
from django.conf import settings
from django.contrib.auth.models import User
from django.core.mail import mail_admins
#admins setup: These users will get 500 error emails
admins = User.objects.filter(is_superuser__exact=True)
settings.ADMINS = []
for u in admins:
settings.ADMINS.append((u.username, u.email))
#send test email
if settings.SEND_TEST_EMAIL:
mail_admins('SEVER HAS BEEN STARTED', 'The server has been started @ '+settings.SITE_IP, fail_silently=False)
更新: 上記の解決策には問題があります。データベースを再構築する必要があり、syncdb を実行すると、ユーザー モデルが見つからないために失敗しました。インポートを models.py init に移動しようとしましたが、まだ運がありません。最初の安全な侵入ポイントはどこですか?? auth/user を拡張して is_admin フィールドを追加するには、admins モデルを作成するか、ユーザー プロファイルを作成する必要がありますか? –</p>