如何在app目录中获取django静态文件?

时间:2015-09-17 03:51:56

标签: python django

我对访问django的静态文件有些怀疑。

版本:1.8.4 settings.py中的VAR:

`BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
STATIC_ROOT = join(PROJECT_ROOT, 'static')
STATIC_URL = '/static/'STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static"),
)


TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [
            # insert your TEMPLATE_DIRS here
            # os.path.join(BASE_DIR, 'templates').replace('\\', '/')
        ],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                # Insert your TEMPLATE_CONTEXT_PROCESSORS here or use this
                # list if you haven't customized them:
                'django.contrib.auth.context_processors.auth',
                'django.template.context_processors.debug',
                'django.template.context_processors.i18n',
                'django.template.context_processors.media',
                'django.template.context_processors.static',
                'django.template.context_processors.tz',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]`
  1. 设置STATICFILES_DIRS,并将django.template.context_processors.static添加到TEMPLATES中的context_processors,这样我就可以在模板中使用'static'标签了。一个src标签,如:src =“{{STATIC_URL}} js / example.js”或src =“{%static'js / example.js'%}”。将为http://myhost/static/js/example.js生成一个网址。

  2. 如果我想在app目录中加载静态文件,我该怎么办?正如我对django-official-doc的理解,

    STATICFILES_FINDERS =( 'django.contrib.staticfiles.finders.AppDirectoriesFinder', 'django.contrib.staticfiles.finders.FileSystemFinder', )

    查找程序将默认搜索app / static,但如果 app / templates / index.html 中的 src =“static / js / example.js”,服务器将返回404代码。直到我添加

    urlpatterns + = staticfiles_urlpatterns()

    到app / urls.py。

  3. 我想知道的是:   为什么404?当加载静态文件形式app / static而没有urlpatterns + = staticfiles_urlpatterns()。   2.如果我想在app / static中获取静态文件,如何以灵活的方式编写url?因为 {{STATIC_URL}}或{%static%} 都指向项目/静态。

    我花了好几个小时阅读stackoverflow上的相关帖子。任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:0)

在项目settings.py

中添加以下代码
STATIC_URL = '/public/static/'
STATICFILES_DIRS = (
    location('static'),
)
STATIC_ROOT = location('public/static')

然后你应该能够访问网址中的内容,如:

http://127.0.0.1:8000/public/static/js/bootstrap.min.js

假设你有一个名为MyProject的项目 前提是您必须有一个名为

的文件夹

Myproject->public->static->js->bootstrap.min.js

在项目目录中。

在您的网页中,您可以通过以下方式简单地引用它:

<link href="{% static 'css/bootstrap.min.css' %}" rel="stylesheet">

希望这个想法非常明确。如果怀疑还原。