2010-03-13 58 views
1

当你在“大企业”中做大型网站时,你最可爱的是和一些开发人员一起工作。如何用Django开发模块化Web UI?

让我们假设dev A插入新用户数据,B创建用户列表,C做一些特权管理,D做疯狂统计图与图像生成等工作。

每个开发人员都开始开发他自己的组件,创建一个视图和一个模板并独立测试,直到每个组件工作。

现在,客户希望将所有这些组件放在一个HTML页面上。如何实现这一目标? 如何以组合形式组装不同的视图/模板,以便它们保持模块化并且可以独立开发和测试?

看起来继承不是要走的路,因为所有这些UI组件都是平等的,没有层次结构。

组装模板的想法是一样的东西

<html> 
<head> 
// include the css for the components and their assembly 
</head> 

<body> 
// include user data form here 
<some containers, images, and so on> 
// show user list 
// show privilege administration in this part 
// and finally, the nice statistic graphs 

// perhaps, we want to display some other components here in future 
</body> 
</html> 

我还没有发现在网络上的答案。大多数人想出了一个大模板,它只是实现了所有的UI功能,消除了所有的模块性。每个组件都应有自己的模板和视图,只处理由一个人开发的组件,然后将它们粘在一起,就像砖块一样。

我非常感谢任何提示!

回答

3

Inclusion tags是要做到这一点的方法。每个应用程序都定义了自己模板片段的标签,然后主模板可以将它们组装成一个页面。

+0

似乎工作正常,虽然我不确定我采取的方式是最简洁和必要的方式,但我找不到详细的示例。 – nh2 2010-03-17 01:01:37

+0

请参阅James Bennett的博客文章 - 它有点过时(它不包括快捷方式的装饰器),但其原理是正确的:http://www.b-list.org/weblog/2006/jun/07/django -tips-write-better-template-tags/ – 2010-03-17 07:07:14

+1

谢谢,那篇文章确实很清晰。 但是,你会推荐包含标签,即使对于像表单等复杂的东西?我发现的大多数例子都是处理诸如'显示这位作者的所有书籍'或者'从X获取最新的NUM'的小事情,但实际上没有一个例子,模板标签包含的东西必须处理用户输入和相应的逻辑 - 在模板标记函数中,而不是视图中,我觉得很奇怪,但我只是在猜测。 – nh2 2010-03-17 19:21:54