”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > Django 适合所有人。

Django 适合所有人。

发布于2024-11-07
浏览:506

Django is for everyone.

即使对于“小型”网站,Django 也很棒

我认为人们倾向于认为 Django 要么用于构建老式的、工业强度的整体应用程序,要么用于 API 并使用 React 之类的东西作为前端。我在这里告诉您,即使对于您的个人网站,普通的 Django 也是一个不错的选择!在我看来,如果你需要数据库,你应该使用 Django1.

为什么是姜戈?

Django 被认为是一个“包含电池”的框架,这些电池非常棒。这些是我使用 Django 而不是其他框架的原因。

对象关系映射器 (ORM)

Django ORM 是使用该框架的一个重要原因。令我惊讶的是,并非所有 Web 框架都包含 ORM。除非您非常喜欢从头开始编写 SQL,否则这是构建应用程序的正确方法。您定义模型,从这些模型创建数据库迁移(大部分自动),在数据库上运行迁移,然后就可以开始了!无需编写半途而废的模型以及一系列可以推断模式的迁移2所有您需要的有关数据的信息都在您的 models.py 文件中,一切都从中产生。

管理员

这是一件大事。它不是 CMS;而是 CMS。它更像是 ORM 的 GUI。定义模型后,您可以通过非常少的配置来管理该数据,而无需编写任何 CRUD 代码。它不是您应用程序的前端。它不是面向最终用户的 CMS(可能)。这是管理员轻松更改网站的一种方式。

渐进增强

这对我来说非常重要,但我们行业的大多数其他人似乎已经忘记了。简单地说;即使 JavaScript 失败,基本级别的功能也应该是可能的。您的应用程序至少应该能够在没有前端脚本的情况下运行。使用 SPA 来做到这一点是一场噩梦。使用真正的后端框架加上 htmx 或 Unpoly 等工具来完成此操作是微不足道的。你只需要把你的观点从现状转向常识。

需要牢记的概念

音乐电视

虽然传统的应用程序框架使用模型、视图、控制器设计模式; Django 对元素的命名略有不同。

  • 模型
    • 好吧,这个是一样的。
  • 模板
    • 这相当于传统的View.
  • 看法
    • 这基本上相当于传统的控制器

数据库迁移

这是 Django 中已解决的问题。真是太好了!还有很多东西需要了解,您应该在运行生成的迁移文件之前查看它们,有时您需要更手动地执行这些操作,但是这就是使用它的关键:

./manage.py makemigrations
# It tells you what it did.

./manage.py migrate
# Database updated!

就是这样! ?

如何开始

火焰马

这是我自己的小项目的地方。对于您(我想正在阅读本文的独立开发人员)来说,好消息是它可以免费用于非商业用途。如果您最终使用它并且它帮助您构建了一个商业应用程序,那么只需 100 美元一次。来吧,这太值了!

即使您最终没有使用整个套件,我也强烈建议您查看我在代码中使用的技术。几乎从一开始就使用 Django 后,这是来之不易的东西。我经历了将它与 Docker 和 Postgres 一起使用的阶段,但我真的相信这对于 99% 想要尝试 Django 的人来说是 的方式。 SQLite 太棒了。

部署

不幸的是,这是选择 Django 而非其他针对个人网站的选项的主要缺点。对于 Blaze.horse,我试图让您轻松度过,但它仍然比应有的更复杂。有一些即将到来的项目给了我希望,例如 Button 和 Appliku,但我个人目前对 Fly 很满意。

后续步骤

读完本文后,我希望您下次需要构建某些东西时能够记住 Django。如果我能帮忙请告诉我!


  1. 如果您需要 CMS,您应该使用 Kirby。如果您需要 CMS,您当然不应该使用静态站点生成器。 FFS ↩

  2. Laravel ↩

版本声明 本文转载于:https://dev.to/battlecat/django-is-for-everyone-3dkp?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • eval()vs. ast.literal_eval():对于用户输入,哪个Python函数更安全?
    eval()vs. ast.literal_eval():对于用户输入,哪个Python函数更安全?
    称量()和ast.literal_eval()中的Python Security 在使用用户输入时,必须优先确保安全性。强大的Python功能Eval()通常是作为潜在解决方案而出现的,但担心其潜在风险。 This article delves into the differences betwee...
    编程 发布于2025-05-25
  • 如何在Java中正确显示“ DD/MM/YYYY HH:MM:SS.SS”格式的当前日期和时间?
    如何在Java中正确显示“ DD/MM/YYYY HH:MM:SS.SS”格式的当前日期和时间?
    如何在“ dd/mm/yyyy hh:mm:mm:ss.ss”格式“ gormat 解决方案:的,请访问量很大,并应为procectiquiestate的,并在整个代码上正确格式不多: java.text.simpledateformat; 导入java.util.calendar; 导入java...
    编程 发布于2025-05-25
  • C++中如何将独占指针作为函数或构造函数参数传递?
    C++中如何将独占指针作为函数或构造函数参数传递?
    在构造函数和函数中将唯一的指数管理为参数 unique pointers( unique_ptr [2启示。通过值: base(std :: simelor_ptr n) :next(std :: move(n)){} 此方法将唯一指针的所有权转移到函数/对象。指针的内容被移至功能中,在操作...
    编程 发布于2025-05-25
  • 如何高效地在一个事务中插入数据到多个MySQL表?
    如何高效地在一个事务中插入数据到多个MySQL表?
    mySQL插入到多个表中,该数据可能会产生意外的结果。虽然似乎有多个查询可以解决问题,但将从用户表的自动信息ID与配置文件表的手动用户ID相关联提出了挑战。使用Transactions和last_insert_id() 插入用户(用户名,密码)值('test','test...
    编程 发布于2025-05-25
  • 为什么HTML无法打印页码及解决方案
    为什么HTML无法打印页码及解决方案
    无法在html页面上打印页码? @page规则在@Media内部和外部都无济于事。 HTML:Customization:@page { margin: 10%; @top-center { font-family: sans-serif; font-weight: bo...
    编程 发布于2025-05-25
  • Spark DataFrame添加常量列的妙招
    Spark DataFrame添加常量列的妙招
    在Spark Dataframe ,将常数列添加到Spark DataFrame,该列具有适用于所有行的任意值的Spark DataFrame,可以通过多种方式实现。使用文字值(SPARK 1.3)在尝试提供直接值时,用于此问题时,旨在为此目的的column方法可能会导致错误。 df.withCo...
    编程 发布于2025-05-25
  • Java中Lambda表达式为何需要“final”或“有效final”变量?
    Java中Lambda表达式为何需要“final”或“有效final”变量?
    Lambda Expressions Require "Final" or "Effectively Final" VariablesThe error message "Variable used in lambda expression shou...
    编程 发布于2025-05-25
  • Java中如何使用观察者模式实现自定义事件?
    Java中如何使用观察者模式实现自定义事件?
    在Java 中创建自定义事件的自定义事件在许多编程场景中都是无关紧要的,使组件能够基于特定的触发器相互通信。本文旨在解决以下内容:问题语句我们如何在Java中实现自定义事件以促进基于特定事件的对象之间的交互,定义了管理订阅者的类界面。以下代码片段演示了如何使用观察者模式创建自定义事件: args)...
    编程 发布于2025-05-25
  • 如何将来自三个MySQL表的数据组合到新表中?
    如何将来自三个MySQL表的数据组合到新表中?
    mysql:从三个表和列的新表创建新表 答案:为了实现这一目标,您可以利用一个3-way Join。 选择p。*,d.content作为年龄 来自人为p的人 加入d.person_id = p.id上的d的详细信息 加入T.Id = d.detail_id的分类法 其中t.taxonomy =...
    编程 发布于2025-05-25
  • 如何在Java的全屏独家模式下处理用户输入?
    如何在Java的全屏独家模式下处理用户输入?
    Handling User Input in Full Screen Exclusive Mode in JavaIntroductionWhen running a Java application in full screen exclusive mode, the usual event ha...
    编程 发布于2025-05-25
  • 找到最大计数时,如何解决mySQL中的“组函数\”错误的“无效使用”?
    找到最大计数时,如何解决mySQL中的“组函数\”错误的“无效使用”?
    如何在mySQL中使用mySql 检索最大计数,您可能会遇到一个问题,您可能会在尝试使用以下命令:理解错误正确找到由名称列分组的值的最大计数,请使用以下修改后的查询: 计数(*)为c 来自EMP1 按名称组 c desc订购 限制1 查询说明 select语句提取名称列和每个名称...
    编程 发布于2025-05-25
  • 在JavaScript中如何并发运行异步操作并正确处理错误?
    在JavaScript中如何并发运行异步操作并正确处理错误?
    同意操作execution 在执行asynchronous操作时,相关的代码段落会遇到一个问题,当执行asynchronous操作:此实现在启动下一个操作之前依次等待每个操作的完成。要启用并发执行,需要进行修改的方法。 第一个解决方案试图通过获得每个操作的承诺来解决此问题,然后单独等待它们: co...
    编程 发布于2025-05-25
  • `console.log`显示修改后对象值异常的原因
    `console.log`显示修改后对象值异常的原因
    foo = [{id:1},{id:2},{id:3},{id:4},{id:id:5},],]; console.log('foo1',foo,foo.length); foo.splice(2,1); console.log('foo2', foo, foo....
    编程 发布于2025-05-25
  • 用户本地时间格式及时区偏移显示指南
    用户本地时间格式及时区偏移显示指南
    在用户的语言环境格式中显示日期/时间,并使用时间偏移在向最终用户展示日期和时间时,以其localzone and格式显示它们至关重要。这确保了不同地理位置的清晰度和无缝用户体验。以下是使用JavaScript实现此目的的方法。方法:推荐方法是处理客户端的Javascript中的日期/时间格式化和时...
    编程 发布于2025-05-25
  • 如何在php中使用卷发发送原始帖子请求?
    如何在php中使用卷发发送原始帖子请求?
    如何使用php 创建请求来发送原始帖子请求,开始使用curl_init()开始初始化curl session。然后,配置以下选项: curlopt_url:请求 [要发送的原始数据指定内容类型,为原始的帖子请求指定身体的内容类型很重要。在这种情况下,它是文本/平原。要执行此操作,请使用包含以下标头...
    编程 发布于2025-05-25

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3