构建Django应用程序时应避免的7个错误

构建Django应用程序时应避免的7个错误

Django我们都知道这个Python框架的流行。Django已经成为开发者构建其网络应用的首选。它是一个免费和开源的Python框架。Django可以轻松解决很多常见的开发难题。它允许你建立灵活和结构良好的Web应用程序。

构建Django应用程序时应避免的7个错误

Django的很多常用功能,如内置的管理面板、ORM(对象关系映射工具)、Routing和templating,都让开发者的工作变得更加轻松。他们不需要花那么多时间从头开始实现这些东西。

Django最重要的功能之一是内置的管理面板。通过这个功能,你可以配置很多东西,比如访问控制列表、行级权限、动作、过滤器、订单、小工具、表单、额外的URL助手等等。

Django ORM可以与所有主要的数据库一起工作。它支持所有主要的SQL查询,你可以在你的应用程序中使用。Django的模板引擎也非常、非常灵活,同时也很强大。尽管Django有很多功能,但开发者在构建一个应用程序时仍然会犯很多错误。在这篇博客中,我们将讨论一些你在构建Django应用程序时应该避免的常见错误。

1.为项目的依赖性使用Python全局环境

为项目的依赖性使用全局环境会产生依赖性冲突。在 Python 中,你不能同时使用多个包的版本。如果不同的项目需要同一个包的不同不兼容的版本,这将会产生一个问题。有许多选项可以隔离你的环境。下面给出了最常见的方法…

  • virtualenv
  • virtualenvwrapper
  • Virtual Machines
  • Containers

2.避免在’requirements.txt’文件中钉住项目的依赖性

当你开始一个Python项目时,从一个有’requirement.txt’文件的隔离环境开始。当你通过 pip/easy_install 安装软件包时,不要忘记将它们添加到你的 ‘requirement.txt’ 文件中。以后当你必须在服务器上部署你的项目时,你就会更容易了。

不同版本的软件包提供不同的模块、功能或参数。如果你的依赖关系有任何微小的变化,那么它就会破坏你的包。因此,在你的 “requirement.txt “文件中注明你的依赖的具体版本是很重要的。在Python中,有非常好的工具pip-tools。在它的命令行工具的帮助下,你可以轻松地管理你的依赖关系。

这个工具会自动生成一个’requirement.txt’文件,其中钉住了你所有的依赖关系和你的整个依赖关系树。同时,保持你的依赖文件的备份。在你的文件系统、Git管理的文件夹、S3文件夹、FTP和SFTP中保留一份副本。

3.不了解基于函数的视图和基于类的视图的好处

基于类的视图提供了一个抽象的类来实现常见的网络开发任务。你可以在使用结构化API的同时获得面向对象编程的优势。你的代码变得更加清晰和可读。你可以为你的视图扩展你的CBV,你可以重写类的属性或函数。

在你的项目中,你可以使用不同的mixins,你可以覆盖基本的CBV行为来建立视图上下文,检查行级的授权,从你的项目结构自动建立模板路径。

基于函数的视图通常也是一个不错的选择。Luke plant的文章很好地解释了为什么你可能想要使用FBVs:https://spookylukey.github.io/django-views-the-right-way/

4.在视图中编写应用逻辑而不是模型

把逻辑写在视图中会使你的应用视图变得 “胖 “而你的模型变得 “瘦”。避免这个错误,总是把逻辑写在你的模型中,而不是视图中。你可以把逻辑分解成小方法,你可以把它写进模型中。你可以在短短的几行代码内从多个来源多次使用它。

5.混乱和无法管理的设置文件

很多时候,当你在一个真实世界的项目上工作时,你的设置文件会增长到超过600-700行的代码。这个巨大而混乱的文件变得难以维护,特别是当你的开发、生产和暂存环境需要自定义配置时。你可以手动划分配置文件,你也可以创建自定义加载器。

6.坏的应用结构和不正确的资源放置

每当你用Django构建一个应用程序时,它都包含多个应用程序。这些应用负责完成一个特定的任务。基本上,这些应用是Python包,至少包含init.py和models.py文件。在最新的Django版本中,你不再需要Django版本了。在你的应用程序中,init.py已经足够了。

你的Django应用程序是建立在不同的Python模块上的,如模型、管理员、视图、URL、模型、表单、模板标签,等等。你可以将你的应用程序划分为可重用的应用逻辑。

始终给你的项目文件夹一个特定的名字,并将你的应用程序放在project/apps/中。之后,你可以把你的应用程序的依赖性放到它们自己的子文件夹里。

7.Django中STATICFILES_DIRS和STATIC_ROOT之间的混淆

Django静态文件主要包含JavaScriptCSS、图片、字体等。python manage.py runserver使用STATICFILES_FINDERS设置搜索静态文件。如果失败了,Django会尝试使用django.contrib.static files.finder.AppDirectoriesFinder来查找文件。这将查找项目中每个已安装应用程序的静态文件夹。你可以编写带有自己静态文件的可重用的应用程序。

在Django中使用静态管理命令python manage.py collectstatic ,你可以通过STATICFILES_FINDERS,你可以从静态文件夹以及STATICFILES_DIRS中复制文件到你在STATIC_ROOT设置中指定的目录。

总结

我们在这篇文章中提到了七个错误,但在Django中还有很多事情需要你去注意。在Django中建立一个项目时,要遵循最佳实践来编写项目中的代码。一切都很重要,从定义一个URL到创建一个视图或定义一个模型到完整的文件夹结构。一开始会很艰难,但随着你的进步,你会看到自己的进步。作为一个初学者,犯这些错误是没有关系的,但是如果你一直关注好的Django项目,你一定会掌握它的。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Django 教程