使用 jinja 使用块内容时如何包含不同的 js 和 css 文件

Posted

技术标签:

【中文标题】使用 jinja 使用块内容时如何包含不同的 js 和 css 文件【英文标题】:how to include different js and css files when using block content using jinja 【发布时间】:2019-05-30 01:39:42 【问题描述】:

我正在使用 Django 创建一个 Web 应用程序。我有一个html模板如下:

<html>
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>
<body>

  % block content %
  % endblock %

</body>
</html>

我正在使用这个模板来创建其他 html 文件

% 扩展'document.html' %

% 块内容 % % endblock %

目前我指的是原始 document.html 中的所有 css 和 js 文件。如何仅在必要时在新模板中引用不同的 js 和 css 文件? 谢谢

【问题讨论】:

【参考方案1】:

把它放在你的setting.py中

STATIC_URL = '/static/'

STATIC_ROOT = os.path.dirname(BASE_DIR) + '/staticfiles/'

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

在创建的应用程序中创建静态文件夹并将您的 css、js 和通过此访问

<link href=" static('/app_name/css/reset.css') " rel="stylesheet">

<script type="text/javascript" src=" static('/app_name/js/jquery-1.11.3.js') "></script>

【讨论】:

【参考方案2】:

现在它正在工作。我只做了一些改动

% extends 'document.html' %
% load staticfiles %

% block content %

现在我可以在新创建的模板中包含我需要的 js 或 css 文件,例如

<script src="% static 'vendors/js/tableexport.min.js' %"></script>

【讨论】:

以上是关于使用 jinja 使用块内容时如何包含不同的 js 和 css 文件的主要内容,如果未能解决你的问题,请参考以下文章

Jinja2 继承与块和包含

如何确定 Jinja2 模板块是不是为空?

如何将选定的命名参数传递给 Jinja2 的包含上下文?

django:在包含的模板中使用块

如何调试 Jinja2 模板?

在Jinja2中导入/包含指定的变量