Django URL、模板、模型和视图的命名约定

Naming convention for Django URL, templates, models and views

我知道有很多用于构建应用程序的命名约定(以单数形式命名数据库表,以大写形式命名模型,并以小写形式命名包),但我没有找到任何命名相关元素的建议。 "If you name your url x, then your view should be named xview" 之类的东西会很有用。

我决定在编写我的第一个 Django 应用程序时使用以下规则,但我觉得我可能会违反一些 DRYesque 原则。我命名 URL、模板、模型和视图的方式有什么问题吗?

创建

  1. URL: car/put
  2. 查看:car_put();视图名称:car_put
  3. 型号:Car
  4. 模板:car_put.html

阅读

  1. URL: car/1 (获取 id 为 1 的汽车);
  2. 查看:car_get();视图名称:car_get
  3. 型号:Car
  4. 模板:car_get.html

更新

  1. URL: car/patch/1(编辑 id 为 1 的汽车)
  2. 查看:car_patch();视图名称:car_patch
  3. 型号:Car
  4. 模板:car_patch.html

删除

  1. URL: car/delete/1(删除 id 为 1 的汽车)
  2. 查看:car_delete();视图名称:car_delete
  3. 型号:Car
  4. 模板:car_delete.html

我不是建一个API,从上面的例子可以推断出的命名规则是受REST启发的,但我的目的不是建一个API,只是为了更好的整理我的代码。

乍一看没有标准,但是在精彩的 Django Rest Framework 中完美地指定了通常的命名约定,这与 Django 教程中的风格几乎相同,但更加明显。如果你想追随一种风格,就追随那个。

对于汽车模型,URLs 将是(样式为 action url):

  • 列表 /cars/
  • 创建 /cars/new/
  • 详情 /cars/1/
  • 更新 /cars/1/edit/
  • 删除/cars/1/delete/
  • 任何不依赖于对象的方法 /cars/view-name/
  • 任何依赖于特定对象的方法 /cars/1/view-name/

您忘记的是 URL 名称(除非这是您对 'view name' 的意思),即 model-action。例如car-list.

模板名称(在 snake_case 中)和查看姓名(大写)。

等等,为什么是大写? 因为比命名约定重要得多的标准是使用强大的class-based views,与旧的基于方法的视图相反,后者缺乏继承性和易于结构化。

如果您阅读本教程,您会注意到它要求您在大约半点时从基于方法的视图升级到基于 class 的视图。基于方法的视图仅对非常小的操作有用,好吧,在 Django 教程中向您介绍视图 :P

TL;DR:随心所欲(虽然我为你的强迫症鼓掌 :P)但如果有什么可以从中拿走的 post 是:使用 class-基于浏览量.