How do you configure Django for simple development and deployment?

后端 未结 14 1443
闹比i
闹比i 2020-11-30 16:14

I tend to use SQLite when doing Django development, but on a live server something more robust is often needed (MySQL/PostgreSQL, for example). Invariably, there are other c

相关标签:
14条回答
  • 2020-11-30 16:57

    Somewhat related, for the issue of deploying Django itself with multiple databases, you may want to take a look at Djangostack. You can download a completely free installer that allows you to install Apache, Python, Django, etc. As part of the installation process we allow you to select which database you want to use (MySQL, SQLite, PostgreSQL). We use the installers extensively when automating deployments internally (they can be run in unattended mode).

    0 讨论(0)
  • 2020-11-30 16:57

    This is an older post but I think if I add this useful library it will simplify things.

    Use django-configuration

    Quickstart

    pip install django-configurations
    

    Then subclass the included configurations.Configuration class in your project's settings.py or any other module you're using to store the settings constants, e.g.:

    # mysite/settings.py
    
    from configurations import Configuration
    
    class Dev(Configuration):
        DEBUG = True
    

    Set the DJANGO_CONFIGURATION environment variable to the name of the class you just created, e.g. in ~/.bashrc:

    export DJANGO_CONFIGURATION=Dev

    and the DJANGO_SETTINGS_MODULE environment variable to the module import path as usual, e.g. in bash:

    export DJANGO_SETTINGS_MODULE=mysite.settings

    Alternatively supply the --configuration option when using Django management commands along the lines of Django's default --settings command line option, e.g.:

    python manage.py runserver --settings=mysite.settings --configuration=Dev

    To enable Django to use your configuration you now have to modify your manage.py or wsgi.py script to use django-configurations' versions of the appropriate starter functions, e.g. a typical manage.py using django-configurations would look like this:

    #!/usr/bin/env python
    
    import os
    import sys
    
    if __name__ == "__main__":
        os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings')
        os.environ.setdefault('DJANGO_CONFIGURATION', 'Dev')
    
        from configurations.management import execute_from_command_line
    
        execute_from_command_line(sys.argv)
    

    Notice in line 10 we don't use the common tool django.core.management.execute_from_command_line but instead configurations.management.execute_from_command_line.

    The same applies to your wsgi.py file, e.g.:

    import os
    
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings')
    os.environ.setdefault('DJANGO_CONFIGURATION', 'Dev')
    
    from configurations.wsgi import get_wsgi_application
    
    application = get_wsgi_application()
    

    Here we don't use the default django.core.wsgi.get_wsgi_application function but instead configurations.wsgi.get_wsgi_application.

    That's it! You can now use your project with manage.py and your favorite WSGI enabled server.

    0 讨论(0)
提交回复
热议问题