我正在寻找一种在Django中组织样式表和脚本的简单方法。我对python的框架和语言比较陌生。我来自PHP背景。
在PHP / Zend的世界中,有一些用view / layout对象实现的函数。通过在head标签中为脚本和样式表添加一行,您可以在视图中轻松添加样式表/脚本 - >方法水平。我已阅读Django表单媒体文档,但这仅适用于需要特定样式和脚本的表单。
任何方向?
答案 0 :(得分:5)
查看django.contrib.admin应用程序。
与管理网站的工作方式并行。
创建媒体目录。
创建media / img,media / jss,media / css,media / whatever目录
在这些中,您将获得应用程序的特定内容。 media / img / app1,media / jss / app1,以便您的每个Django应用程序都可以拥有特定媒体而不会发生冲突或问题。
确保您的设置已设置MEDIA_ROOT。你想在Django文档中读到这个。您还必须设置MEDIA_URL以进行部署。而且你必须弄清楚如何使你的网络服务器(即Apache)服务于这种媒体。
Django不应该提供静态文件,如.js库或.css文件或任何图像。这是浪费时间。 Apache可以很好地服务于此。但是,出于测试目的,您可以在Django站点中启用简单的文件服务器功能。
最后。最重要的是。
请确保您的网页模板实际引用了您要包含在网页{{MEDIA_URL}}css/site.css
和{{MEDIA_URL}}js/app1/something.js
中的各种文件。
答案 1 :(得分:2)
请注意,从django 1.3开始,旧的staticfiles应用程序已成为django.contrib
的一部分。
最重要的是,您可以将静态媒体粘贴到static/
中任意应用中的settings.INSTALLED_APPS
子目录中,该文件将由{{1}自动收集管理命令。
与其重新哈希,我只会指出你的文件:Django: the staticfiles app。
您可能还需要考虑寻找能够处理基于文本的静态文件(css和javascript)的内容,这些内容可以轻松地进行组合,缩小和版本化。我很想看看这个,所以还没有链接。
答案 2 :(得分:0)
我喜欢在我的样式表附近放置与风格相关的图片,并为用户上传的内容提供不同的路径,例如个人资料图片,照片,视频......
所以我最终得到这样的东西:
/media
/style
base.css
img/
logo.gif
button.gif
/js
home.js
/profile
user_profile_image.gif
这样,css中的图像引用可以总是相对的:
background: url(img/background.gif)
此外,还有一些用于处理媒体,css / js压缩,精灵等的应用程序。
答案 3 :(得分:0)
看起来您可能正在寻找一种方法来有条件地包含基于当前页面的样式表。这可以使用模板标签完成。
在base.html文件中,您将创建一个添加样式表的部分。
{% block addl_styles %}{% endblock %}
然后在您要加载样式的页面中,您将使用相同的块以及block.super
将脚本附加到应用程序调用的任何其他脚本。
因此,在您的表单模板中,您将使用如下代码:
{% block addl_styles %}
{{ block.super }}
<link rel="stylesheet" type="text/css" href="{{ MEDIA_URL }}your_css_folder/example.css" />
{% endblock %}
请注意,您可以使用{{ MEDIA_URL }}
以编程方式添加基础目录,并以安全的方式到达您的文件夹。