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、模板、模型和视图的方式有什么问题吗?
创建
- URL:
car/put
- 查看:
car_put()
;视图名称:car_put
- 型号:
Car
- 模板:
car_put.html
阅读
- URL:
car/1
(获取 id 为 1 的汽车);
- 查看:
car_get()
;视图名称:car_get
- 型号:
Car
- 模板:
car_get.html
更新
- URL:
car/patch/1
(编辑 id 为 1 的汽车)
- 查看:
car_patch()
;视图名称:car_patch
- 型号:
Car
- 模板:
car_patch.html
删除
- URL:
car/delete/1
(删除 id 为 1 的汽车)
- 查看:
car_delete()
;视图名称:car_delete
- 型号:
Car
- 模板:
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-基于浏览量.
我知道有很多用于构建应用程序的命名约定(以单数形式命名数据库表,以大写形式命名模型,并以小写形式命名包),但我没有找到任何命名相关元素的建议。 "If you name your url x
, then your view should be named xview
" 之类的东西会很有用。
我决定在编写我的第一个 Django 应用程序时使用以下规则,但我觉得我可能会违反一些 DRYesque 原则。我命名 URL、模板、模型和视图的方式有什么问题吗?
创建
- URL:
car/put
- 查看:
car_put()
;视图名称:car_put
- 型号:
Car
- 模板:
car_put.html
阅读
- URL:
car/1
(获取 id 为 1 的汽车); - 查看:
car_get()
;视图名称:car_get
- 型号:
Car
- 模板:
car_get.html
更新
- URL:
car/patch/1
(编辑 id 为 1 的汽车) - 查看:
car_patch()
;视图名称:car_patch
- 型号:
Car
- 模板:
car_patch.html
删除
- URL:
car/delete/1
(删除 id 为 1 的汽车) - 查看:
car_delete()
;视图名称:car_delete
- 型号:
Car
- 模板:
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-基于浏览量.