需要有关Django网址和视图设计的帮助

时间:2012-10-08 09:51:16

标签: django design-patterns django-views django-urls

道歉,如果之前已经讨论过,搜索过并搜索过但没有找到任何有用的东西:)

但是这里有。 我们目前正在重写我们的部分网络应用程序。我们的应用程序相当陈旧,因此受到一些相当牛仔式的编程,约定和网址的影响。

我们正在寻找的是一种简单干净的方式来设计我们的观点和网址,以便我们将来更容易维护。

问题是;截至目前,我们的主站点的urls.py文件是一个大混乱。很多网址指向一个只有一个薄的独特视图。 防爆。 list_books /,edit_book / etc. 当谈到特定格式等时,我们有类似list_books_json /

的东西

(这些不是实际的网址,但只是用来证明一点,因为真正的网址更糟糕)

我们现在要做的是清理一下。我们想知道最好的方法是什么?

到目前为止我们已经想到了(在阅读了很多关于这个主题的内容之后):

我们考虑过按照以下模式设计我们的网址: 域/对象/动作/

因此应用“工作人员”网站更改应用中的图书的网址将是: 员工/书籍 - 查看所有书籍(GET) 员工/书籍/身份证 - 查看一本书(GET) staff / books / new - 创建新书(POST) 员工/书籍/身份证/编辑 - 编辑特定书籍(POST) 员工/书籍/身份证/删除 - 删除特定书籍(POST)

然后想到只有一个视图,views.staff_books()来处理通过网站“员工”部分处理书籍时的所有这些操作。 以便staff_books()检查ID或某个“动作”(编辑,新建,删除等)

结果会更少,但需要处理员工/书籍各方面的大量视图。现在我们有很多小视图只处理一件事。

这是否有意义,你能看到潜在的问题吗?你们是怎么做到的?

我认为我们迷失的一个地方是格式。 你会把ex放在哪里在json中返回响应的请求? 我们想知道“staff / books.json”或“staff / books / ID.json”等,然后将所有json逻辑保存在相同的“staff_books()”视图中。

基本上就是这样。对不起,这个问题有点“蓬松”......我们基本上需要一些例子或关于如何构建网址和视图的好设计建议。

亲切的问候

皮特

1 个答案:

答案 0 :(得分:1)

作为问题的扩展(和解决方案),我建议使用策略模式。既然你已经有了一个结构,唯一不同的是它应该如何执行,这个模式完全适合你的问题。我的意思是:

  1. 使用名为基于网址的功能(编辑,新建,删除等)创建一个视图,该视图是应用程序的入口点。即你的url.py决定从那里去哪里。
  2. 创建根据您的域名执行您的工作的类等。现在让我们称之为书籍,日历等。
  3. 实现这些类的功能,如编辑,新建,删除等。
  4. 在您的视图中,确定要实例化的类并调用相应的函数,例如在View.edit()中调用domain.edit()
  5. 我认为应该这样做^^ 希望它有所帮助:D