Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在生产或开发模式下运行Django,让变量依赖于它_Python_Django - Fatal编程技术网

Python 在生产或开发模式下运行Django,让变量依赖于它

Python 在生产或开发模式下运行Django,让变量依赖于它,python,django,Python,Django,我正在处理一个Django项目,在我的一个功能中,我将用户重定向到一个重定向url,这在生产和开发中是不同的。当项目在生产环境中运行时,它将使用wsgi.py文件和gunicorn启动服务器。在开发时,我使用python manage.py runserver启动服务器。所以我想我可以初始化环境变量'DEVELOPMENT\u MODE'='FALSE',然后在我有重定向url的py文件中计算os.environ.get('DEVELOPMENT\u MODE'),因为这个环境变量不会用pyth

我正在处理一个Django项目,在我的一个功能中,我将用户重定向到一个重定向url,这在生产和开发中是不同的。当项目在生产环境中运行时,它将使用wsgi.py文件和gunicorn启动服务器。在开发时,我使用
python manage.py runserver
启动服务器。所以我想我可以初始化环境变量
'DEVELOPMENT\u MODE'='FALSE'
,然后在我有重定向url的py文件中计算
os.environ.get('DEVELOPMENT\u MODE')
,因为这个环境变量不会用
python manage.py runserver
初始化。但这似乎不起作用,我正在寻找解决方案。这是我在Django的第一个项目

环境变量在wsgi.py中设置如下:

import os
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'spotifycluster.settings')
os.environ.setdefault('DEVELOPMENT_MODE', 'TRUE')
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
import os

CLIENT_ID = "xxxx"
CLIENT_SECRET = "xxxx"

if os.environ.get('DEVELOPMENT_MODE') == 'TRUE':
    REDIRECT_URI = 'http://127.0.0.1:8000/spotify/redirect'
    URL = 'http://127.0.0.1:8000/'
else:
    REDIRECT_URI = 'http://nameless-taiga-02413.herokuapp.com/spotify/redirect'
    URL = 'http://nameless-taiga-02413.herokuapp.com/'
然后credentials.py,其中存在需要依赖于env var的变量,如下所示:

import os
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'spotifycluster.settings')
os.environ.setdefault('DEVELOPMENT_MODE', 'TRUE')
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
import os

CLIENT_ID = "xxxx"
CLIENT_SECRET = "xxxx"

if os.environ.get('DEVELOPMENT_MODE') == 'TRUE':
    REDIRECT_URI = 'http://127.0.0.1:8000/spotify/redirect'
    URL = 'http://127.0.0.1:8000/'
else:
    REDIRECT_URI = 'http://nameless-taiga-02413.herokuapp.com/spotify/redirect'
    URL = 'http://nameless-taiga-02413.herokuapp.com/'
我导入重定向URI和URL并在此处使用它们:

def get(self, request, format=None):
     url = Request('GET', 'https://accounts.spotify.com/authorize', params={
            'client_id': CLIENT_ID,
            'redirect_uri': REDIRECT_URI,
            'scope': scope,
            'response_type': 'code',
        }).prepare().url


有时会使用
settings.py中的
DEBUG
。您可以创建重定向到另一个视图的视图,具体取决于该设置。

您是否可以显示您的函数以及在某些环境中要重定向到的示例URL?当然可以。我详细阐述了我的问题。这些是URL吗;你的django应用程序运行在哪里?或者这些是django应用程序外部的URL?这些URL是应用程序运行的位置。因此,在dev中的localhost URL和prod.Django中的Heroku URL上,您都会注意到这一点,通常您不会声明完整的URL,您只需声明并说出其中一个URL的名称,,django将负责为您构建URL。我如何将该值导入另一个py文件?
从django.conf导入设置
然后
设置。调试
-