Django Sitesモジュールとmanage.py syncdbについて
Auth モジュールは、.\manage.py syncdb. デフォルトのサイト ドメイン名でも同様のことが起こることを期待しています。現在、管理 Web サイトを使用して変更しない限り、ハードコードされた example.com です。syncdb 中に変更したい。
Django Sitesモジュールとmanage.py syncdbについて
Auth モジュールは、.\manage.py syncdb. デフォルトのサイト ドメイン名でも同様のことが起こることを期待しています。現在、管理 Web サイトを使用して変更しない限り、ハードコードされた example.com です。syncdb 中に変更したい。
プラグインして再生できる小さな django アプリを作成しました。プラグインするには:
manage.py syncdb
またはmanage.py createdefaultsite
スクリーンショット:
(pinax-dev)>manage.py createdefaultsite
Site domain name: mydomain.com
Site display name: My Site!
(pinax-dev)
単体テストが付属しています。単体テストを実行するには:
(pinax-dev)>manage.py test site_default
「site_default」はアプリ名です。
ソースコード: http://github.com/peiwei/pinax/raw/master/pinax/apps/site_default.tgz
より多くのスクリーンショット:
(pinax-dev)> manage.py syncdb
Creating table...
You just installed Django's auth system, which means you don't have any superuse
rs defined.
Would you like to create one now? (yes/no): yes
Username: administrator
E-mail address: who@who.com
Password:
Password (again):
Superuser created successfully.
Would you like to change the default site domain name? (yes/no)[default:no]: yes
Site domain name: mydomain.com
Site display name: My Site!
...
Installing index for signup_codes.SignupCode model
Installing index for signup_codes.SignupCodeResult model
これは自分で行うことができます:
post_syncdb
信号に接続しますこのコマンドを使用すると、コマンド ラインから簡単にサイトを設定できます。sites
それを信号に接続すると、アプリがインストールされるたびにプロンプトが表示されます. 例えば:
from django.contrib.sites import models as sites_app
signals.post_syncdb.connect(create_site, sender=sites_app)
関数 (シグナル ハンドラー) を記述するときは、モジュールのアプローチをほぼcreate_site
そのままコピーできます。auth
def create_site(app, created_models, verbosity, **kwargs):
from django.contrib.sites.models import Site
from django.core.management import call_command
if Site in created_models and kwargs.get('interactive', True):
msg = "\nYou just installed Django's sites system, which means you don't have " \
"any sites defined.\nWould you like to create one now? (yes/no): "
confirm = raw_input(msg)
while 1:
if confirm not in ('yes', 'no'):
confirm = raw_input('Please enter either "yes" or "no": ')
continue
if confirm == 'yes':
call_command("createsite", interactive=True)
break
管理コマンドを作成するだけでcreatesite
完了です。なぜこれがまだ Django にないのだろうかと思いますが、example.com は嫌いです。
これらすべてを小さなアプリに入れ、実行するすべてのプロジェクトで再利用します。Googleコードやdjangoのバグトラッカーなどの場所にアプリを投稿すると、ボーナスポイント.