2016-04-08 10 views
0

djangoプロジェクトでcronによって呼び出されるコマンドを記述しました。私たちはdjangoプロジェクトに完全なURLを出力する必要があります。しかし、devのURLは、プロのURLとは異なります。djangoのコマンドでroot urlを取得する方法

例えば、私のdevのURLは次のとおりです。https://<dev machine ip>/myproject/dashboard/data

マイPROD URLはかもしれhttps://companyname.com/myproject/dashboard/data

予想:PROD用 https://<dev machine ip>/myproject

https://companyname.com/myproject

devに関する

私は好きではありませんハードコードURL。どのように下のコマンドファイル内の完全なURLまたはルートのURLを取得するには?

class Command(BaseCommand): 
     def handle(self, *args, **options): 
       url = "url" # need to get url here 
+0

は、それらの両方のために、各サーバー上のcronの実行、または一つだけのcronを実行していますか?最初のケースでは 'localhost'を使うことができます。 2番目の方法では、2番目のcronを実行することを検討できます。 – Wtower

+0

https://docs.djangoproject.com/en/dev/ref/contrib/sites/#getting-the-current-domain-for-full-urls –

+0

shackerからの回答を見る –

答えて

0

これを変数settings.pyに設定します。実動サーバー上にトークンファイルまたは環境変数を作成し、変数をその存在に依存させる必要があります。

settings.py:

import os 

# Either use a token file 
PRODUCTION = os.path.exists('/somewhere/convienent/.DJANGO_PRODUCTION_TOKEN') 
# Or use an environment variable 
PRODUCTION = 'DJANGO_PRODUCTION_SERVER' in os.environ 

if PRODUCTION: 
    BASE_URL = "<dev machine ip>" # This could be computed if you want. 
else: 
    BASE_URL = "companyname.com" 

あなたのコマンド:

from django.conf import settings 

class Command(BaseCommand): 
    def handle(self, *args, **options): 
     url = settings.BASE_URL 
関連する問題