Python-如何在Django中管理本地和生产设置?

发布于 2021-02-02 23:15:38

建议处理本地开发和生产服务器设置的建议方式是什么?它们中的某些(例如常量等)可以在两者中进行更改/访问,但是其中一些(例如静态文件的路径)需要保持不同,因此,每次部署新代码时都不应覆盖它们。

当前,我将所有常量添加到中settings.py。但是每次我在本地更改某些常量时,都必须将其复制到生产服务器并编辑文件以进行生产特定更改… :(

编辑:这个问题似乎没有标准答案,我已经接受了最受欢迎的方法。

关注者
0
被浏览
65
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    建议处理本地开发和生产服务器设置的建议方式是什么?它们中的某些(例如常量等)可以在两者中进行更改/访问,但是其中一些(例如静态文件的路径)需要保持不同,因此,每次部署新代码时都不应覆盖它们。

    当前,我将所有常量添加到中settings.py。但是每次我在本地更改某些常量时,都必须将其复制到生产服务器并编辑文件以进行生产特定更改… :(

    编辑:这个问题似乎没在settings.py

    try:
        from local_settings import *
    except ImportError as e:
        pass
    

    你可以覆盖需要的内容local_settings.py;然后,它应该脱离版本控制。但是由于你提到复制,我猜你没有使用;)有标准答案,我已经接受了最受欢迎的方法。



  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。
    project/
        app1/
        app2/
        project/
            __init__.py
            settings/
                __init__.py
                base.py
                local.py
                production.py
        manage.py
    

    base.py文件包含常用的设置(如MEDIA_ROOT或ADMIN),而local.pyproduction.py有网站特定的设置:

    在基本文件中settings/base.py:

    INSTALLED_APPS = (
        # common apps...
    )
    

    在本地开发设置文件中settings/local.py:

    from project.settings.base import *
    
    DEBUG = True
    INSTALLED_APPS += (
        'debug_toolbar', # and other apps for local development
    )
    

    在文件生产设置文件中settings/production.py

    from project.settings.base import *
    
    DEBUG = False
    INSTALLED_APPS += (
        # other apps for production site
    )
    

    然后,在运行django时,添加以下–settings选项:

    # Running django for local development
    $ ./manage.py runserver 0:8000 --settings=project.settings.local
    
    # Running django shell on the production site
    $ ./manage.py shell --settings=project.settings.production
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看