繁体   English   中英

样式表未从Django的相对路径加载

[英]stylesheet not loading from relative path in django

当前在django中设置了文件夹结构:

{appname} \\ templates \\

{appname} \\ templates \\ assets \\ css \\

但是,当我尝试在{appname}\\templates\\模板中包含诸如<link rel="stylesheet" href="assets/css/bootstrap.css" />之类的内容时,无论出于何种原因都不会加载; 我可以直接从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文件,但未加载-我在这里做错了什么?

您想将css放在应用程序根目录中名为static的文件夹中。 然后确保INSTALLED_APPS (在settings.py中)包含了django.contrib.staticfiles 现在,当您运行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中的STATICFILES_DIR )移动到STATIC_ROOT定义的文件夹。 然后让您的网络服务器在STATIC_URL提供这些文件(django不会处理,实际上django文档似乎建议您甚至不使用与服务django应用程序相同的网络服务器)。

您可以将静态文件放置在所需的任何位置,并由django对其进行管理,只需在STATICFILES_DIR元组中包含目录的位置即可。

看一看在文档上提供静态文件。 (我假设您正在使用django 1.4)

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM