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



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

但事情是这样的。我们目前正在重写我们的网络应用程序的一部分。我们的应用程序相当陈旧,因此在编程、约定和url方面存在一些相当牛逼的方法。

我们正在寻找的是一种简单干净的方式来设计我们的视图和url,这样我们将来可以更容易地维护这两者。

问题是;到目前为止,我们主站点的urls.py文件一团糟。很多url指向一个只进行一次精简的独特视图。例如list_books/、edit_book/等。当涉及到特定格式等时,我们有类似list_books_json/的东西

(虽然这些不是实际的URL,但只是用来证明一点,因为实际的URL要糟糕得多)

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

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

我们考虑按照以下模式设计url:域/对象/操作/

因此,用于更改应用程序中书籍的应用程序"工作人员"网站的URL为:员工/书籍-查看所有书籍(GET)staff/books/ID-查看一本书(GET)staff/books/new-创建新书(POST)职员/书籍/ID/edit-编辑特定书籍(POST)职员/书籍/ID/delete-删除特定书籍(POST)

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

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

这有道理吗?你能看到潜在的问题吗?你们怎么做的??

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

基本上就是这样。很抱歉这个问题有点"松散"。。。我们基本上需要一些关于如何构建url和视图的示例或良好的设计建议。

向致以诚挚的问候

pete

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

  1. 创建一个视图,该视图是您的应用程序的入口点,具有命名为基于url的功能(编辑、新建、删除等)的功能。也就是说,您的url.py决定从哪里开始
  2. 创建基于域等内容的类。让我们现在称它们为Book、Calendar等
  3. 实现这些类的功能,如编辑、新建、删除等
  4. 然后在您的视图中,确定要实例化的类并调用相应的函数,例如在view.edit()中调用domain.edit(

我认为应该这样做^^希望有帮助:D

最新更新