目前在django中设置了文件夹结构:
{appname} \ templates \
{APPNAME} \模板\资产\ CSS \
但是当我尝试在<link rel="stylesheet" href="assets/css/bootstrap.css" />
的模板中添加{appname}\templates\
之类的内容时,无论出于何种原因,它都没有加载;我可以直接从twitter加载,但我更愿意保留相对路径。
为什么这不起作用?如果它是任何线索,PyCharm中的子文件夹显示为浅灰色,不知道为什么会发生这种情况。
编辑:好的,所以我读了here有关如何设置静态文件的信息,并在我的主项目文件夹下设置了static
目录,其中包含{ {1}}下方的文件夹。
我更新了settings.py以包含:
css
然后尝试添加
# 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.
)
到我的html文件,但它没有加载 - 我在这里做错了什么?
答案 0 :(得分: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元组中包含目录的位置。
查看提供静态文件的docs。 (我假设你正在使用django 1.4)
答案 1 :(得分:0)
您不应将媒体文件放在模板目录中。每个应用使用媒体目录(在本例中为静态),以便您的设置文件可以找到它,请参阅Django directory structure?