2016-04-08 13 views
0

drongo projesinde cron tarafından çağrılacak bir komut yazdım. Tam URL'yi django projeme yazdırmamız gerekiyor. Fakat dev url prod url'den farklıdır.django içinde komut içinde root url nasıl edinilir

Örneğin benim dev url: https://<dev machine ip>/myproject/dashboard/data

Benim prod url olabilir https://companyname.com/myproject/dashboard/data

Beklenen: eşya için https://<dev machine ip>/myproject

: https://companyname.com/myproject

dev adına

Yapmak istemem sabit kod url. Komut dosyasında tam URL veya kök url nasıl alınır?

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

her ikisi için ayrı ayrı sunucuda cron çalıştırmak mı, yoksa sadece bir cron çalışır? İlk durumda 'localhost' kullanabilirsiniz. İkincisi, ikinci bir cron çalıştırmayı düşünebilirsiniz. – Wtower

+0

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

+0

Shacker'ın yanıtına bakın –

cevap

0

Bunu settings.py içinde bir değişken olarak ayarlıyorum. Üretim sunucunuzda bir belirteç dosyası veya bir ortam değişkeni oluşturmanız, ardından değişkenin varlığına bağlı olması gerekir.

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" 

hakimiyetin:

from django.conf import settings 

class Command(BaseCommand): 
    def handle(self, *args, **options): 
     url = settings.BASE_URL 
İlgili konular