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

时间:2015-08-04 18:27:56

标签: python django templates naming-conventions crud

我知道有很多命名约定来构建应用程序(以单数形式命名数据库表,以大写形式表示模型,以及所有小写的包),但我还没有找到任何建议来命名相关元素。类似于"如果您为自己的网址x命名,那么您的观点应该被命名为xview"会有用的。

我决定使用以下规则编写我的第一个Django App,但我觉得我可能会破坏一些DRYesque原则。我如何命名URL,模板,模型和视图有什么问题吗?

创建

  1. 网址:car/put
  2. 查看:car_put();查看名称:car_put
  3. 型号:Car
  4. 模板:car_put.html
    1. 网址:car/1(获取ID为1的汽车);
    2. 查看:car_get();查看名称:car_get
    3. 型号:Car
    4. 模板:car_get.html
    5. 更新

      1. 网址:car/patch/1(编辑ID为1的汽车)
      2. 查看:car_patch();查看名称:car_patch
      3. 型号:Car
      4. 模板:car_patch.html
      5. 删除

        1. 网址:car/delete/1(删除ID为1的汽车)
        2. 查看:car_delete();查看名称:car_delete
        3. 型号:Car
        4. 模板:car_delete.html
        5. 我没有构建API,可以从上面的示例中推断出的命名规则受到REST的启发,但我的目的不是构建API,只是为了更好地组织我的代码。

1 个答案:

答案 0 :(得分:19)

乍一看,没有标准,但通常的命名约定在精彩的Django Rest Framework中完美指定,这几乎与Django教程中的样式相同,但更为明显。如果你想要一个风格,请遵循这个风格。

对于Car模型,网址将为(样式为操作 url):

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

您忘记的是网址名称(除非您的意思是'查看名称'),这将是model-action。例如car-list

相同的 model_name 操作用于模板名称(以snake_case为单位)和视图名称(在CapitalCase中)。

等等,为什么选择CapitalCase?因为比命名约定更重要的标准是使用强大的 class-based views ,而不是基于旧的方法观点,缺乏继承性和结构化。

如果您阅读本教程,您会注意到它要求您在半个点左右从基于方法的视图升级到基于类的视图。基于方法的视图仅适用于非常小的操作,并且在Django教程中向您介绍视图:P

TL; DR:按照你的意愿行事(虽然我赞扬你的OCD:P)但是如果有什么可以从这篇文章中删除的话:使用基于类的视图。< / p>