社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Django

如何管理django模板中的javascript模块?

Aaron • 5 年前 • 887 次点击  

假设我们想要一个基于javascript的功能库(我认为是jquery): 例如:

  1. Ajax对话框
  2. 日期选择器
  3. 表单验证器
  4. 滑动菜单栏
  5. 手风琴的东西

每个代码有四部分:一些python、css、js和html。

如何安排所有这些部件,以便:

  • 每个javascript“模块”可以被不同的视图整齐地重用
  • 构成完成功能的四位代码保持在一起。
  • css/js/html部分出现在响应中的正确位置
  • 模块之间的公共依赖关系不会重复(例如:公共的javascript文件)

X---------------

如果模板在从templatetag调用时遵循%block%指令,或者有某种方法可以确保这样做是很好的。因此,可以在一个文件中为CSS、HTML和JS创建一个单独的模板,每个模板都有一个块。通过模板tag调用它,该模板是从任何视图所需的模板调用的。这没什么意义。这能不能已经有办法了?我的templateTag模板似乎忽略了%block%指令。

X---------------

把这样的媒体放在这里是很有意义的。 http://docs.djangoproject.com/en/dev/topics/forms/media/ 这可能适用于表单验证器和日期选择器示例。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/30681
 
887 次点击  
文章 [ 4 ]  |  最新文章 5 年前
thornomad
Reply   •   1 楼
thornomad    14 年前

我认为你将很难把这四个部分放在一起,然后迅速地应用它们——仅仅是因为有些部分出现在你的 <head> 标签和其他 <body> 标签。

所做的是确保为我的 base.html (以及我的基本CSS文件)…然后,我有块标签 {% block css %} {% block js %} . 继承的模板 基.html 文件可以提供自己的javascript和css(并且只提供所需的东西)。

我创建了一些模板标记,用于创建Ajax函数,其输出基于所显示的对象(例如,包括 object_id )--这就减少了重新编码。

有一件事我没试过,但我感兴趣的是 django-compress .

Hendrik M Halkow
Reply   •   2 楼
Hendrik M Halkow    11 年前

看一看 Django Sekizai 就是为了这个目的而创造的。

Peter Rowell
Reply   •   3 楼
Peter Rowell    14 年前

如果一个以上的页面使用一个给定的JS文件,您应该考虑将它们连接在一起并缩小结果。这样可以减少网络连接,从而提高整体页面加载时间。别忘了把你的过期时间延长到至少一两周。

Aaron
Reply   •   4 楼
Aaron    14 年前

我发布这个问题已经有一段时间了。我一直在做的是:

  1. 编写所需的javascript部分作为静态服务的库
  2. 使用服务器端的值从模板调用静态库中的例程

约束需要以这样一种方式编写:它只充当客户端脚本;不要试图在服务JS时从服务器注入值。最后,我发现在HTML模板中严格地应用服务器端变量不那么容易混淆。

这样我就能:

  1. 将HTML标记上的javascript选择器保留在同一个文件(即模板)中。
  2. 完全避免模板
  3. 在不同的地方重复使用每个javascript库,以及
  4. 将CSS/JS/HTML片段保存在所有希望找到它们的地方

这并不完美,但它让我过得很快,直到一个更整洁的想法出现。

例如,“media/js/alertlib.js”中的JS库可能包括:

function click_alert(selector, msg){ 
    $(selector).click(function(){ alert(msg) })
}

模板有:

<script type="text/javascript" src="media/js/alertlib.js"></script>
<script type="text/javascript">
    click_alert('#clickme', {% message %})
</script>

<div id='clickme'>Click Me</div>