【问题标题】:Django: Where to store global static files and templates?Django:在哪里存储全局静态文件和模板?
【发布时间】:2016-06-19 21:41:29
【问题描述】:

所以我正在开发一个 Django (1.9) 项目,并且需要在多个应用程序中使用相同的模板和静态文件。我知道如何使用存储在每个应用程序外部的模板和静态文件(在 settings.py 中使用 STATICFILES_DIRS 和 TEMPLATEFILES_DIRS),但是 我应该将它们存储在哪里?

我的猜测是在项目目录的文件夹中。

home/user/myproject/staticfiles
home/user/myproject/templates

但如果有官方重新考虑(我在文档中找不到),我更愿意遵守这些。

另外,如果您认为我应该知道在正常 django 应用程序目录之外使用模板和静态文件的任何其他建议,我非常感谢您告诉我(或告诉我在哪里查看)。

干杯:)

【问题讨论】:

    标签: python django


    【解决方案1】:

    假设这里有一个全局 css 文件: home/user/myproject/staticfiles/css/global.css

    更改 settings.py 以匹配此:

    STATIC_URL = '/static/'
    STATICFILES_DIRS = [
        os.path.join(BASE_DIR, "staticfiles"), 
    ]
    

    模板内部,例如index.html:

    {% load static %}
    
    <link rel="stylesheet" type="text/css" href="{% static 'css/global.css' %}" />   
    

    现在 Django 可以找到 global.css。

    【讨论】:

    • STATIC_URL 有什么用?
    【解决方案2】:

    在您的 settings.py 文件中添加以下内容

    STATIC_URL = '/static/' # this will be added before your file name
    STATIC_ROOT = 'path/to/your/files/' # this will help django to locate the files
    

    在此处了解更多信息:https://docs.djangoproject.com/en/1.9/howto/static-files/

    【讨论】:

      【解决方案3】:

      虽然 nu everest 的答案正确且有效(在您重新启动服务器后),但在我的情况下,它缺乏我的 IDE 自动建议静态文件路径的优势。所以我去在我的项目中指定一个相对路径。为简单起见,我将目录命名为“静态”(与 STATIC_URL 变量相同),但当然可以使用任何名称。

      settings.py:

      STATIC_URL = '/static/'
      
      STATICFILES_DIRS = [
          "myproject" + STATIC_URL
      ]
      

      这里重要的是:根实际上不是settings.py 的父级,而是其父级的父级,如:

      BASE_DIR = Path(__file__).resolve().parent.parent
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-03
        • 2013-06-18
        • 2014-07-21
        • 2011-10-13
        • 1970-01-01
        相关资源
        最近更新 更多