2

目前在 django 中设置了一个文件夹结构:

{应用程序名称}\模板\

{appname}\templates\assets\css\

但是当我尝试<link rel="stylesheet" href="assets/css/bootstrap.css" />在我的模板中包含类似的内容时{appname}\templates\,无论出于何种原因,它都不会加载;我可以直接从 twitter 加载,但如果可能的话,我更愿意保留相对路径。

为什么这不起作用?如果有任何线索,PyCharm 中的子文件夹显示为浅灰色,也不知道为什么会这样。


编辑:好的,所以我在这里阅读了有关如何设置静态文件的信息,并static在我的主项目文件夹下设置了一个目录,并在该目录下设置了一个css文件夹。

我更新了 settings.py 以包括:

# Absolute path to the directory static files should be collected to.
# Don't put anything in this directory yourself; store your static files
# in apps' "static/" subdirectories and in STATICFILES_DIRS.
# Example: "/home/media/media.lawrence.com/static/"
STATIC_ROOT = ''

# URL prefix for static files.
# Example: "http://media.lawrence.com/static/"
STATIC_URL = '/static/'

# Additional locations of static files
import os.path

STATICFILES_DIRS = (
    os.path.dirname(__file__).replace('\\','/'),
    # Put strings here, like "/home/html/static" or "C:/www/django/static".
    # Always use forward slashes, even on Windows.
    # Don't forget to use absolute paths, not relative paths.
)

然后尝试添加

<link rel="stylesheet" href="{{ STATIC_URL }}css/bootstrap.css" />

到我的 html 文件,但它没有加载 - 我在这里做错了什么?

4

2 回答 2

1

您希望将 CSS 保存在应用程序根目录中名为 static 的文件夹中。然后确保您已django.contrib.staticfiles包含在INSTALLED_APPS(在您的 settings.py 中)。现在,当您运行时python manage.py runserver,您的静态文件将在 localhost:8000/static/ 中可用(这是由STATIC_URL设置定义的 - 默认为static/)。

您需要确保在视图中使用RequestContext对象。这确保来自 settings.py 的变量(例如 STATIC_URL)在模板中可用 -

def your_view(request):
    #...
    return render_to_response('page.html', context_data, context_instance=RequestContext(request))

(如果您使用新的render()快捷方式而不是render_to_response ,则会为您处理)

如果您在生产环境中提供文件,那么您可以使用该python manage.py collectstatic命令将所有静态文件(即static/应用程序根目录中名为的文件夹中的任何内容,STATICFILES_DIR以及STATIC_ROOT. 然后让您的网络服务器提供这些文件STATIC_URL(这不是由 django 处理的,实际上 django 文档似乎建议您甚至不使用为 django 应用程序提供服务的同一网络服务器)。

你可以把你的静态文件放在你想要的任何地方,并让 django 管理它们,只需在 STATICFILES_DIR 元组中包含目录的位置。

查看有关提供静态文件的文档。(我假设您使用的是 django 1.4)

于 2013-02-14T06:39:29.350 回答
0

您不应将媒体文件放在模板目录中。每个应用程序使用一个媒体目录(在这种情况下是静态的),以便您的设置文件可以找到它,请参阅Django 目录结构?

另请参阅Django 管理、静态和媒体文件中的混淆

于 2013-02-14T06:05:37.487 回答