0

メールと管理者の設定を設定しようとしていますが、ユーザーモデルにクエリを実行して、メールアドレスとその他のメールクレデンシャルを取得したいので、gitハブのすべての人にその情報を提供する必要はありません。設定ファイルの最後に次のものを入れた場合(データベースが定義された後):

from django.contrib.auth.models import User
u1 = User.objects.get(pk__exact=1)
ADMINS = ((u1.username, u1.email))
print ADMINS

クエリは成功し、サーバーが起動しますが、アプリを起動しようとすると、設定ファイルのどこに上記のコードを配置したかによって、設定が欠落しているためにさまざまなエラーが発生します。

これから、設定ファイルでデータベースをクエリできないことがわかりました。サーバーの起動時にADMINS設定と電子メール設定変数が入力されるようにこのコードをどこに置くことができますか?

4

2 に答える 2

1

でdjangoモデルを使用しないことをお勧めしますsettings.py

通常、settings.pyロード後、django はデータベース構成が何であるかを認識します。

より慣用的な方法は、 settings.py の最後にいくつかのコードを追加することです:

from local_settings import *

または単に名前空間に上書きし、 local_settings でADMINSハードコードし、ADMINS = (('admin', 'admin@example.com'))

from local_settings import ADMINS

情報を github に公開したくないのでlocal_settings.py.gitignore.

@DJV が言ったように、「settings.py の ADMINS とスーパーユーザーは別のことを意味します (最初のユーザーはサイトを管理し、他のユーザーはコンテンツを管理することが期待されます)」、ADMINS はそれほど重要ではないと思います。

于 2013-03-14T15:15:06.097 に答える
0

サーバーがリクエストごとではなくスピンアップしたときにこのコードを実行したかったのですが、このソリューションはまさにそれを行っているようです。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>

于 2013-03-14T18:38:09.043 に答える