Django框架专业开发者的最佳实践
Django是一个开源的、基于Python的框架,用于构建Web应用程序。为了使我们的Django代码更具可读性和效率,我们应该遵循一定的规则/做法。这些不应该被看作是使用Django的正确方法或唯一方法,而是使用Django框架的最佳实践。
代码规范
一般来说,代码应该是干净的、简洁的、可读的、可测试的和DRY __(不要重复自己)。尽量合理地遵循PEP8指南。
使用虚拟环境
避免对项目的依赖性使用全局环境,因为它可能产生依赖性冲突。Python 不能同时使用多个软件包版本。如果不同的项目需要同一个包的不同不兼容的版本,这可能是一个问题。始终在一个虚拟环境中隔离你的项目需求和依赖关系。最常见的方法是使用 virtualenv。
Requirements.txt File
Requirements是你的项目在运行时使用的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
在模型关系中使用正确的相关名称
相关名称指定了从父模型返回到子模型的反向关系。用复数表示related-name是合理的,因为它返回一个查询集
# 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 模板
位置 :模板可以放在两个地方,要么放在app目录下,要么放在项目的根目录下。建议把模板放在根目录下,但如果你想让你的应用程序可重复使用(在多个地方使用),你应该把它放在app目录下。
#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模型),我将使用以下模板。
address_book/contact_list.html
类似地,联系人的详细视图将使用
address_book/contact_detail.html