首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否有一种方法可以在Django HTML上加载模板文件夹下的文件?

是否有一种方法可以在Django HTML上加载模板文件夹下的文件?
EN

Stack Overflow用户
提问于 2015-05-21 16:24:51
回答 2查看 1.6K关注 0票数 0

我可以像这样在Django html上加载css文件

代码语言:javascript
运行
复制
{% load staticfiles %}
<link rel="stylesheet" href="{% static "css/style.css" %}">

不知道为什么不能加载模板文件夹下的css文件。

代码语言:javascript
运行
复制
<link rel="stylesheet" href="css/style.css">

是否有一种方法可以在Django HTML上加载模板文件夹下的文件?

为什么Django要我把{%静态"css/style.css“%}这种格式放在所有的静态文件上?是因为装载速度快得多吗?

如果我加载模板文件夹下的文件呢?装货慢吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-21 17:06:18

正如我所看到的,您忽略了Django中模板和静态文件的概念。

首先,有两种独立的机制:加载模板文件(未来的HTML文件)和加载静态文件(css、js、图像)。

加载模板Django时使用TEMPLATE_LOADERS (文档),基本上在settings.py中定义为:

代码语言:javascript
运行
复制
TEMPLATE_LOADERS = (
    # Loads templates from DIRS setting:
    'django.template.loaders.filesystem.Loader', 

    # Loads templates from your installed apps:
    'django.template.loaders.app_directories.Loader', 
)

您可以通过设置DIRS (如果使用Django >= 1.8)或TEMPLATE_DIR (如果Django < 1.8)来定义yout模板的位置。在呈现模板时还有几个步骤,例如:模板上下文处理器等,但是文档中列出了所有这些步骤。

关于静态文件。

静态文件由django.contrib.staticfiles应用程序(文档)在DEBUG = True时提供。在生产中,它是由Nginx、Apache或其他Http-服务器完成的。在加载静态文件时,Django使用STATICFILES_FINDERS。它们通常被定义为:

代码语言:javascript
运行
复制
STATICFILES_FINDERS = (
    # Loads static files from STATICFILES_DIRS:
    "django.contrib.staticfiles.finders.FileSystemFinder",

    # Load static files from installed apps:
    "django.contrib.staticfiles.finders.AppDirectoriesFinder"
)

有两个主要的设置需要关注:STATIC_URLSTATICFILES_DIRSSTATIC_URL基本上只是一个前缀,用于获取静态文件。它几乎总是只有'/static/'。在STATICFILES_DIRS中,有指向静态文件文件夹的路径。它有时被扩展到包括node_modulesbower_components或类似的东西。

在处理模板中的静态文件时,需要将STATIC_URL附加到文件的URL中。最简单的方法是{% static %}标记。

STATIC_ROOT带来了很多混乱。它只是一个路径,在运行collectstatic管理命令之后,您的所有静态文件都将在生产中被收集。

票数 1
EN

Stack Overflow用户

发布于 2015-05-21 16:44:33

模板和静态资产是两种不同类型的资产,为安全目的需要进行不同的管理。

所有的js,css和图像文件需要提供给客户,以使您的网站工作。它们是从客户端处理的,因此它们需要可用。因此,静态资产文件夹是可用的,如果您检查查看源并遵循这些资产的链接,您将看到它们可以直接在您的broswer中打开。

然而,django本身使用模板来生成通过视图设置的输出。当用户打开页面时,他不会访问模板本身,而是访问django所做的呈现。因此,最终用户无法通过设计访问模板文件夹,包括其中的文件。因此,用户可以从django应用程序访问的唯一东西是视图提供的响应,这些响应基于urls模式和模板,以及静态文件夹中的资产。因此,除了静态文件夹之外,您不能也不应该链接到其他任何地方的静态资产。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30379352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档