2010-12-16 70 views
1

试图找出完成此操作的最佳方法。我插入了一个很好的Django项目。意见:把这段代码放在django应用程序中的位置:

在管理员(即:侧面链接,广告,常量联系人)中,用户可以在页面中包含多个预编码模块(页面和模块是此应用中的模型)。

一个新的需求涉及在同一个井中插入一个内部链接模块。这些链接没有像其他模块那样与页面关联,它们是单独的多对多连接 - 即一个链接可以在所有页面的集合中重用。

模板伪代码是:

if page has modules: 
loop through modules: 
    write the pre coded content of module 

由于链接需要在同一以及模块,我已经创建了一个“链接占位符模块”具有链路占位符的一个段塞。

新的伪代码为:

if page has modules: 
loop through modules: 
    if module.slug is "link-placeholder": 
    loop through page.links and output each 
    else: 
    write pre-coded module 

我的问题是在哪里写这篇输出的链接最好的地方?在我看来,我的选择是:

  1. 构建出来放到模板(容易,但那种变得混乱 - 代码是好的,现在纯)
  2. 建立在页面模型是一个函数被称为遇到“链接占位符时)page.get_internal_link_ouutput。从本质上讲,这将查询,生成并打印内部链接模块输出。
  3. 做同样的事情用一个自定义的模板标签。

我倾向于2或3,但它似乎不是正确的地方做,我想我有时会得到对于在django应用程序中放置代码的最佳位置有点困惑,尽管我确实很喜欢这个框架。

在此先感谢您的任何建议。

回答

2

我建议使用自定义模板标签。

将代码直接写入模板并不适合那么多的逻辑,我不相信模型应该添加模板特定的方法。更好地让模板特定的逻辑存在于模板特定的类和函数中(例如模板标签)。

相关问题