意见:将此代码放在django app中的位置:

时间:2010-12-16 21:38:37

标签: django django-models

试图找出实现这一目标的最佳方法。我已经完成了一个非常好的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. 使用自定义模板标记执行相同操作。
  4. 我倾向于2或3,但它似乎不是正确的地方。我想我有时会对django应用程序中放置代码的最佳位置感到困惑,尽管我确实喜欢这个框架。

    提前感谢任何建议。

1 个答案:

答案 0 :(得分:2)

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

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