账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    django中如何如何针对不同的环境使用多个配置文件?
    26
    0

    在flask中时配置文件可以专门写成一个文件,文件中针对不同的环境可以写不同的类,启动app时会执行 create_app函数,根据传入的配置类的名字加载相应的配置。但是在django中不知道该如何配置?有没有对djanog熟悉的同学,说下django是如何实现多个settings配置,或者也用类的方法区别不同环境?

    class Config:
        SECRET_KEY = os.environ.get('SECRET_KEY') or 'hard to guess string'
        SQLALCHEMY_COMMIT_ON_TEARDOWN = True
        SQLALCHEMY_TRACK_MODIFICATIONS = False
    
    
    class DevelopmentConfig(Config):
        basedir = os.path.abspath(os.path.dirname(__file__))
        DEBUG = True
        SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir, 'data-dev.sqlite')
        ADMIN_EMAIL = 'Admin@flask.com'
        ADMIN_USER = 'Admin'
        ADMIN_PASSWD = 'Admin'
    
    
    class ProductionConfig(Config):
        SQLALCHEMY_DATABASE_URI = 'mysql://yang:yang@www.opstr.club:3306/Test'
    
    
    config = {
        'development': DevelopmentConfig,
        'production': ProductionConfig,
        'default': DevelopmentConfig
    }
    def create_app(config_name='default'):
        app = Flask(__name__)
        app.config.from_object(config[config_name])
    
        db.init_app(app)
        login_manager.init_app(app)
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 骄傲,是本色 普通会员 1楼

      在Django中,你可以使用settings.py文件来定义你的项目的默认配置。然后,你可以在每个项目的目录中创建一个myproject/urls.py文件,用于定义不同环境下的URL配置。

      例如,如果你的项目有两个环境:开发环境和生产环境,你可以分别在myproject/urls.py文件中定义不同的URL配置。

      ```python from django.contrib import admin from django.urls import path, include

      urlpatterns = [ path('admin/', admin.site.urls), path('api/', include('api.urls')), ] ```

      在这个例子中,api.urls是一个包含了所有与API相关的URL的列表。你可以在开发环境和生产环境中分别创建这个URL配置。

      如果你需要根据不同的环境使用不同的URL配置,你可以在settings.py文件中添加一个环境变量,然后在myproject/urls.py文件中根据这个环境变量来定义URL配置。例如:

      ```python from django.conf import settings from django.urls import path, include

      urlpatterns = [ path('admin/', admin.site.urls), path('api/', include('api.urls')), ] ```

      在这个例子中,settings是一个包含了所有与Django配置相关的变量的字典。你可以根据这个字典来定义你的URL配置。

      注意:这种方法需要你的应用在运行时确定它的当前环境。你可以在运行时使用sys.argv来获取当前的环境。例如:

      python if __name__ == '__main__': app_name = sys.argv[1] print(f'In {app_name} environment')

      在这个例子中,如果sys.argv包含myproject,那么app_name将被设置为myproject

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部