📜  专业开发人员的最佳实践——Django 框架

📅  最后修改于: 2022-05-13 01:54:33.064000             🧑  作者: Mango

专业开发人员的最佳实践——Django 框架

Django 是一个基于 Python 的开源框架,用于构建 Web 应用程序。为了使我们的 Django 代码更具可读性和效率,我们应该遵循一定的规则/实践。这些不应被视为使用 Django 的正确方法或唯一方法,而是使用 Django 框架的最佳实践

编码风格

一般来说,代码应该干净、简洁、可读、可测试和干燥 (不要重复自己) 。尽可能合理地遵循PEP8指南。

使用虚拟环境

避免对项目依赖项使用全局环境,因为它会产生依赖项冲突。 Python不能同时使用多个包版本。如果不同的项目需要同一包的不同不兼容版本,这可能会成为问题。始终在虚拟环境中隔离您的项目需求和依赖关系。最常见的方法是使用virtualenv。

要求.txt 文件

要求是您的项目在运行时使用的Python包(依赖项)列表,包括每个包的版本。更新您的 requirements.txt 文件以与其他开发人员正确协作非常重要。此文件包含在您的代码存储库中时,使您能够通过在终端中执行一行来更新安装在虚拟环境中的所有包。

要生成新的 requirements.txt 文件或更新现有文件,请使用此命令。确保您位于正确的目录中。

(virtualenv) $ pip freeze > requirements.txt

在将代码推送到存储库之前更新 requirements.txt 文件并在从存储库中提取代码后安装 requirements.txt 文件是一个很好的做法。

避免编写胖视图

你应该编写胖模型,瘦视图,这意味着尝试在模型本身中编写大部分逻辑。

例如:假设我们正在实现向用户发送电子邮件的功能,最好使用电子邮件函数扩展模型,而不是在控制器/视图中编写此逻辑。这使您的代码更容易进行单元测试,因为您可以在一个地方测试电子邮件逻辑,而不是在发生这种情况的每个控制器/视图中重复。

正确的型号命名

通常模型表示单个对象或实体,因此模型名称应该是单数名词。

# Bad practice
class Users(models.Model):
  pass
  
# Good practice
class User(models.Model): # use 'User' instead of 'Users'
  pass

在模型关系中使用正确的相关名称

相关名称指定从父模型返回到子模型的反向关系。用复数表示相关名称是合理的,因为它返回一个查询集

# parent model
class Owner(models.Model):
    pass
   
# child model
class Item(models.Model):
    # use "items" instead of "item"
    owner = models.ForeignKey(Owner, related_name ='items')

Django 模板

地点 模板可以放在两个地方,一个是应用程序目录本身,一个是项目的根目录。建议将模板放在根目录中,但如果您想让您的应用程序可重用(在多个地方使用),则应将其放在应用程序目录中。

#Good practice
root_folder/
    my_app1/
    my_app2/
    my_app3/
    templates/

#If you want to make your app reusable
root_folder/
    my_app1/
        templates/
    my_app2/
        templates/
    my_app3/
        templates/

命名:正确命名您的模板有助于任何新开发人员立即拿起您的 django 代码。好的模板名称看起来像这样

[application]/[model]_[function].html

例如,创建一个模板来列出我的地址簿(地址簿应用程序)中的所有联系人(联系人模型) ,我将使用以下模板:

address_book/contact_list.html

同样,联系人的详细视图将使用

address_book/contact_detail.html