📌  相关文章
📜  构建 Django 应用程序时应避免的 7 个错误

📅  最后修改于: 2021-10-22 02:35:48             🧑  作者: Mango

Django……我们都知道这个Python框架的流行。 Django 已成为开发人员构建 Web 应用程序的首选。它是一个免费的开源Python框架。 Django 可以轻松解决很多常见的开发挑战。它允许您构建灵活且结构良好的 Web 应用程序。

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

Django 的许多常见功能,例如内置的管理面板、ORM(对象关系映射工具)、路由、模板,使开发人员的任务变得更容易。他们不需要花太多时间从头开始实施这些事情。

Django最重要的功能之一是内置的管理面板。使用此功能,您可以配置很多内容,例如访问控制列表、行级权限和操作、过滤器、订单、小部件、表单、额外的 URL 帮助程序等。

Django ORM 开箱即用,适用于所有主要数据库。它支持您可以在应用程序中使用的所有主要 SQL 查询。同时,Django 的模板引擎也非常非常灵活和强大。即使 Django 中提供了很多功能,开发人员在构建应用程序时仍然会犯很多错误。在这篇博客中,我们将讨论在构建 Django 应用程序时应该避免的一些常见错误。

1.使用Python全局环境进行项目依赖

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

  • 虚拟环境
  • 虚拟包装器
  • 虚拟机
  • 容器

2. 避免在“ requirements.txt”文件中固定项目依赖

当您从Python项目开始时,请从带有“requirement.txt”文件的隔离环境开始。当您通过 pip/easy_install 安装软件包时,不要忘记将它们添加到您的“requirement.txt”文件中。稍后当您必须在服务器上部署项目时,这对您来说会更容易。

不同版本的包提供不同的模块、函数或参数。如果您的依赖项有任何微小的变化,那么它可能会破坏您的包。因此,将依赖项的特定版本固定在“requirement.txt”文件中非常重要。有非常好的工具pip-tools可用 Python借助其中可用的命令行工具,您可以轻松管理您的依赖项。

此工具会自动生成一个“requirment.txt”文件,该文件固定所有依赖项和整个依赖项树。另外,请保留依赖项文件的备份。在您的文件系统、Git 管理的文件夹、S3 文件夹、FTP 和 SFTP 中保留一个副本。

3. 使用旧式Python函数而不是基于类的视图

在Python,大多数时候开发人员会避免使用基于类的视图,因为它很复杂。在应用程序的 views.py 文件中使用Python函数在一段时间内可能是一个好主意(例如:对于测试或实用程序视图)。

基于类的视图提供了一个实现常见 Web 开发任务的抽象类。您可以获得使用结构化 API 的优势以及面向对象编程的优势。您的代码变得更加清晰和可读。您可以为视图扩展 CBV,并且可以覆盖类属性或函数。

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

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

在视图中编写逻辑会使您的应用程序视图“胖”而您的模型“瘦”。避免这个错误,并始终在您的模型而不是视图中编写逻辑。您可以将逻辑分解为小方法,然后将其写入模型中。您可以在几行代码中从多个来源多次使用它。

5. 设置文件杂乱难管理

很多时候,在实际项目中工作时,您的设置文件会增长到超过 600-700 行代码。这个庞大而凌乱的文件变得难以维护,尤其是当您的开发、生产和暂存环境需要自定义配置时。可以手动分割配置文件,也可以创建自定义加载器。

6. 糟糕的应用结构和错误的资源放置

每当您使用 Django 构建应用程序时,它都会包含多个应用程序。这些应用程序负责执行特定任务。基本上,这些应用程序是包含至少__init__.pymodels.py文件的Python包。在最新的 Django 版本中,您不再需要 Django 版本。 __init__.py 在您的应用程序中就足够了。

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

始终为您的项目文件夹指定一个特定名称,并将您的应用程序放在 project/apps/ 中。之后,您可以将您的应用程序依赖项放入它们自己的子文件夹中。

7. Django 中 STATICFILES_DIRS 和 STATIC_ROOT 的混淆

在 Django 中,静态文件主要包含JavaScript、CSS、图像、字体等。它们在部署过程中被收集到一个公共目录中。 Python manage.py runserver使用 STATICFILES_FINDERS 设置搜索静态文件。如果发生故障,Django 会尝试使用 django.contrib.staticfiles.finders.AppDirectoriesFinder 查找文件。这会查看项目中每个已安装应用程序的静态文件夹。您可以编写带有自己的静态文件的可重用应用程序。

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

结论

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