Django - How to deal with the paths in settings.py on collaborative projects

后端 未结 5 1287
爱一瞬间的悲伤
爱一瞬间的悲伤 2021-02-01 08:17

I have just started a feasibility study on Django for my company and I have noticed the need for absolute paths on settings.py:

TEMPLATE_DIRS = (
   # Put string         


        
相关标签:
5条回答
  • 2021-02-01 09:00

    Besides using os.path you could add

    try:
        import * from settings_local
    except:
        pass
    

    at the end of you settings.py. Every developer can then create his own settings_local.py file which is not checked in into the VCS!

    0 讨论(0)
  • 2021-02-01 09:03
    import os.path
    
    #Get the absolute path of the settings.py file's directory
    PWD = os.path.dirname(os.path.realpath(__file__ )) 
    
    TEMPLATE_DIRS = (
        # Put strings here, like "/home/html/django_templates" or 
        # "C:/www/django/templates".
        # Always use forward slashes, even on Windows.
        # Don't forget to use absolute paths, not relative paths.
    
        #Add Templates to the absolute directory
        os.path.join(PWD, "Templates") 
    )
    

    That's how I do relative imports. Note that is usually wise to have a separate localsettings.py file, or something similar.

    0 讨论(0)
  • 2021-02-01 09:07

    The alternative to using relative path from the settings.py file, is for each developer to have their own settings.py.

    # settings.py
    TEMPLATE_DIRS = (
        'c:\django\templates\',
    )
    
    # dev-x-settings.py
    import settings
    TEMPLATE_DIRS = (
        'd:\dev\django\project\templates\'
    )
    

    The dev-x-settings.py imports all the settings from the base file, and changes the bits and pieces they need to. Also very handy for maintaining a local sqlite database and the like.

    We usually set out our settings as:

    /settings/
        __init__.py
        production.py
        staging.py
        test.py
        dev-x.py
        dev-y.py
    

    Then all you need to worry about is running the server and passing it the correct settings.py file.

    0 讨论(0)
  • 2021-02-01 09:09

    Do this:

    import os
    ROOT_PATH = os.path.dirname(__file__)
    .
    .
    .
    TEMPLATE_DIRS = (
        os.path.join(ROOT_PATH, 'templates'),
    )
    

    This will set the paths according to the directory of settings.py file

    0 讨论(0)
  • 2021-02-01 09:11

    settings.py is just another Python module. Import and use the various functions in os.path to build your paths.

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