Django 简介 (2020) wemake-django-template

2025-06-07

Django 入门 (2020)

wemake-django-模板

介绍

流行的 Python 网络框架对于新手和经验丰富的网络开发人员来说可能有点令人生畏。

然而,作为 Instagram、Spotify、YouTube、DropBox、Pinterest 等众多应用的支柱,Django 成为初创企业和大型企业成功且灵活开发的绝佳工具。

在本介绍中,我们将向您简要介绍 Django,以便您可以自信地继续项目教程。


背景

Web服务器

网络服务器的工作是向您提供网页。

当您访问某个 URL 时,您实际上是在请求 Web 服务器为您提供 HTML 文档。

理论上,我们可以运行任何我们想要的程序代码来生成 HTML 文档。这使得我们能够使用变量和函数等语言特性来生成页面。

然而,对于整个团队来说,在没有持续合并冲突的情况下处理大型网站是很困难的。

Django 的解决方案是模型-模板-视图架构软件模式。

简单来说:

  • 模板包含网页的显示逻辑(HTML)。
  • 视图将模板与变量结合起来生成页面。
  • 可以使用模型从数据库中获取数据以供视图使用。

这个架构还有一层,那就是routes。路由是从 URL 到资源或其他路由的路径。

路由允许我们创建一些有关如何获取特定文件的逻辑,而无需用户以 URL 形式请求其绝对文件路径。


入门

制作项目

安装 Django 就像运行一样简单$ pip install django

一旦安装了 Django,我们就可以访问该$ django-admin命令及其子命令。

我们现在可以使用来生成我们的项目$ django-admin startproject

现在重要的是要确定 Django 是一个框架,它提供用于构建 Web 应用程序的工具以及为其运行 Web 服务器的工具。

当我们运行时startprojectwebsite/目录和manage.py文件就被创建了。

  • website/目录是存储我们的 Web 应用程序和 Web 服务器文件的地方。
  • manage.py文件是通过命令行运行和管理 Web 服务器的工具。

项目文件

website/目录默认包含以下文件:

  • init .py:Python 包详细信息,目前为空白。
  • settings.py:项目的设置和配置详细信息。
  • urls.py:将 URL 映射到视图的路径列表。
  • wsgi.py:用于与 Web 服务器通信的 Django 文件。

理论上我们可以在这个文件夹中创建views.pymodels.pytemplate.html

然而,在我们的项目中创建一个应用程序来开始构建既是开发人员的惯例,也是 Django 的惯例。

Django 可以运行带有开箱即用的欢迎页面的 Web 服务器。

我们可以用一个命令来完整地启动它:$ python manage.py runserver。现在它将从 提供 Web 文件localhost,默认情况下,它在端口 上托管 Django 网站8000


开始开发

应用程序

在 Django 中,一个项目由应用程序组成,每个应用程序都有自己的功能。

这有助于我们避免在单个文件夹中开发整个项目的单一方法。这样做的另一个好处是能够将应用程序直接从一个项目复制到另一个项目。

我们可以使用来生成我们的应用程序$ django-admin startapp

这将创建一个类似于 的应用程序目录website/。但是,该应用程序包含网页逻辑的文件,例如views.pymodels.py

视图

让我们快速介绍一下一些网络。

为了“访问”一个网页,客户端会向 Web 服务器发送 HTTP 请求。如果请求成功完成,则会返回包含 HTML 代码的 HTTP 响应。

因此,我们视图的工作是返回包含一些生成的 HTML 的 HTTP 响应。

值得庆幸的是,这只是 Django 中的一个函数调用。

from django.http import HttpResponse

def home(request):
    return HttpResponse('<h1>Hello, world!</h1>')
Enter fullscreen mode Exit fullscreen mode

路线

从我们的项目routes到应用程序的路由routes非常简单。

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('app/', include('app.urls')),
]
Enter fullscreen mode Exit fullscreen mode

在我们的应用程序中,我们需要创建一个urls.py文件,我们可以从中复制该urls.py文件website/

from django.urls import path
from . import views

path('', views.about, name='app-home'),
path('about/', views.about, name='app-about'),
Enter fullscreen mode Exit fullscreen mode

现在,对 /app/about 的请求将从我们的项目根目录一直路由到about视图。


进一步发展

模板

模板只是 HTML 文件。Django 会在 中寻找它们app/templates/app/\*.html

我们使用render()以下函数将它们包含在视图中:

def home(request):
    return render(request, 'app/index.html')
Enter fullscreen mode Exit fullscreen mode

的内容app/index.html将是这样的:

<!DOCTYPE html>
<html>
<body>
  <p>Welcome to the Home page.</p>
</body>
</html>
Enter fullscreen mode Exit fullscreen mode

Django 模板语言 (DTL) 代码可以与 HTML 代码一起放入,以处理变量、命令块和其他 Python 功能。

<!DOCTYPE html>
<html>
<body>
  <p>Welcome to the {{ title }} page.</p>
</body>
</html>
Enter fullscreen mode Exit fullscreen mode

为了将变量(例如title)传递到模板中,render()需要第三个参数。

def home(request):
    return render(request, 'app/index.html', {'title': 'Home'})
Enter fullscreen mode Exit fullscreen mode

静态文件

静态文件通常是指向的本地文件href,例如图像和 JavaScript 文件。

Django 将在 中寻找它们app/static/app/\*.*

静态文件加载后通过DTL访问static

{ % load static % }

<link rel="stylesheet" href="{% static 'blog/main.css' %}">
Enter fullscreen mode Exit fullscreen mode

数据库和模型

Django 有自己的内置 ORM(对象关系映射器)。

它的一个好处是可以作为任何数据库的接口,允许我们使用不同的 DBMS 包。例如,我们可以在开发中使用 SQLite3,在生产中使用 PostgreSQL,而无需更改代码。

我们的数据库结构将由 Django ORM 表示为类。

这些类就是我们将要使用的模型。以下是一个博客文章模型示例:

class Post(models.Model):
    title = models.CharField(max_length=128)
    date = models.DateTimeField(default=timezone.now)
    content = models.TextField()
    author = models.ForeignKey(User, on_delete=models.CASCADE)
Enter fullscreen mode Exit fullscreen mode

迁移

如果您通过模型编辑数据库的结构,则需要运行迁移才能对我们的数据库进行更改。

  1. 运行$ python manage.py makemigrations以创建迁移。
  2. 运行$ python manage.py migrate以运行迁移。

迁移存储在您的应用程序migrations/目录中(即 0001_initial.py)。

您可以打开该文件来查看它在做什么,甚至可以使用查看从迁移生成的 SQL 查询$ python manage.py sqlmigrate app 0001


包管理

要求

您不应该手动安装软件包,而应该保留一个列出这些软件包的文本文件。

Pip 可以读取这个列表,然后自动批量安装这些包。

$ pip install -r requirements.txt

这有很多优点,例如可以作为您和其他开发人员兼容包的书面记录,以及帮助在新机器上部署。

Django 显然是必需的。你也可以在其中列出任何你想要的其他有用的软件包。

虚拟环境

您应该为该项目设置一个虚拟环境。

虚拟环境允许我们专门为项目安装包和版本,而不是在整个操作系统中全局安装。

  • $ pip install virtualenv如果尚未安装,请运行。
  • 进入你的项目的根目录,然后运行$ python -m venv django-venv
  • 最后,用 '激活' 这个 venv $ source django-venv/bin/activate

Windows 用户需要使用$ source django-venv/Scripts/activate

现在,使用将您的包安装到环境中$ pip install -r requirements.txt

每次处理该项目时您都需要重新进入该环境。


额外比特

Django 管理员

管理页面允许您通过以模型为中心的界面管理网站上的内容。

您首先需要创建一些凭证,这需要默认数据库。

  1. 运行$ python manage.py migrate,这将初始化一个默认数据库。
  2. 运行$ python manage.py createsuperuser以设置管理员配置文件。

再次导航到http://localhost:8000/admin/并使用您的详细信息登录。

Django 表单

Django 有一些用于常见流程的内置表单对象。

用于注册新用户,由和字段UserCreationForm组成usernamepassword1password2

密码散列内置于这些表单对象中。


最后的话

希望这可以作为 Django 内部运作的 5 分钟指南,并作为未来的参考。

重要的是要记住,Django 是一个成熟的框架,和任何语言一样,它也有自己的细微差别和怪异之处。你需要开始构建才能掌握它!

您可以在以下网址找到精彩的项目教程:https://www.youtube.com/watch?v= UmljXZIypDc

最后,如果您有任何问题或意见,我可能会将我的回复整理到本指南中,以帮助未来的读者。因此,我欢迎所有反馈!

祝您开发之旅顺利。


文章来源:https://dev.to/tao/your-intro-to-django-2020-3a01
PREV
🤓 十大 JavaScript 代码简洁技巧
NEXT
将 ESLint 和 Prettier 添加到 Nuxt 3 ✨ (2024)