What is the path for TEMPLATE_DIRS in django settings.py when using virtualenv

前端 未结 5 1738
感动是毒
感动是毒 2021-01-05 02:15

I am using virtualenv and I want to know what the TEMPLATE_DIRS in settings.py should be, for example if I make a templates folder in the root of m

相关标签:
5条回答
  • 2021-01-05 02:30

    If you're working with a newer version of Django you may have to add it to the DIR list that is inside settings.py under TEMPLATES.

    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': ['[project name]/templates'], # Replace with your project name
            'APP_DIRS': True,
            'OPTIONS': {
                'context_processors': [
                    'django.template.context_processors.debug',
                    'django.template.context_processors.request',
                    'django.contrib.auth.context_processors.auth',
                    'django.contrib.messages.context_processors.messages',
                ],
            },
        },
    ]
    
    0 讨论(0)
  • 2021-01-05 02:40

    If you are using Django 1.9, it is recommended to use BASE_DIR instead of PROJECT_DIR.

    # add at the beginning of settings.py
    import os
    
    # ...
    
    TEMPLATE_DIRS = (
        os.path.join(BASE_DIR, 'templates/'),
    )
    
    0 讨论(0)
  • 2021-01-05 02:45

    the PROJECT_DIR has not been defined... the PROJECT_DIR is not a variable. its a directory/ a path to where the folder "templates" is located. This should help

    import os
    PROJECT_DIR = os.path.dirname(os.path.dirname(__file__))
    TEMPLATE_DIRS = os.path.join(PROJECT_DIR, 'templates')
    
    0 讨论(0)
  • 2021-01-05 02:50

    Adding this in web/settings.py solved everything for me. Hope it can help you too.

    import os
    BASE_DIR = os.path.dirname(os.path.dirname(__file__))
    from os.path import join
    TEMPLATE_DIRS = (
        join(BASE_DIR,  'templates'),
    )
    
    0 讨论(0)
  • 2021-01-05 02:51

    You need to specify the absolute path to your template folder. Always use forward slashes, even on Windows.

    For example, if your project folder is "/home/djangouser/projects/myproject" (Linux) or 'C:\projects\myproject\' (Windows), your TEMPLATE_DIRS looks like this:

        # for Linux
        TEMPLATE_DIRS = (
            '/home/djangouser/projects/myproject/templates/',
        )
    
        # or for Windows; use forward slashes!
        TEMPLATE_DIRS = (
            'C:/projects/myproject/templates/',
        )
    

    Alternatively you can use the specified PROJECT_ROOT variable and generate the absolute path by joining it with the relative path to your template folder. This has the advantage that you only need to change your PROJECT_ROOT, if you copy the project to a different location. You need to import the os module to make it work:

    # add at the beginning of settings.py
    import os
    
    # ...
    
    TEMPLATE_DIRS = (
        os.path.join(PROJECT_ROOT, 'templates/'),
    )
    
    0 讨论(0)
提交回复
热议问题