如何使用Django时需要学习的核心概念

181 阅读4分钟

使用Django时需要学习的核心概念

在今天的讨论中,我将向你介绍这个被称为Django的伟大的Python后台框架。在Web应用开发领域,有不同的服务器端语言和框架,Django就是其中之一。

说白了,Django只是几年前建立在一种叫做Python的著名编程语言之上的框架。在这个我最喜欢的后端框架的旅程中,请和我一起探索更多。

Django使用了一个叫做pip的Python包,这在安装了Python之后就变得非常方便。Django被用来配置网络应用的服务器端,如Shopify、Google、Pinterest、Instagram等。

惊讶吧!是的,像上述这些公司都使用Django进行后台操作。

Django网络框架允许开发者通过使用其概念,实际与应用程序的用户界面建立联系,从而连接服务器端。

本文将介绍几个需要掌握的概念,无论你是刚开始学习这个框架还是有一些经验。

主要收获

在本文结束时,读者将对以下主题有所了解。

  1. Django项目结构
  2. Django中的url路由如何工作
  3. MVT作为Django中的一个概念的含义
  4. 了解Django管理界面
  5. Django默认表单系统
  6. 添加自定义数据库到Django项目

1.Django项目结构

我们将首先创建我们项目的工作目录,并按照Django的要求为我们的项目创建一个虚拟环境。

虚拟环境只是一个文件/文件夹,包含了所有从Python pip命令中安装的必要的Django依赖项。

当项目部署到现实世界时,所有这些依赖项都将与项目一起运出,将它们冻结在一个名为requirements.txt 的文件中。

要将所有已安装的依赖项编译到requirements.txt 文件中,请运行以下命令。

$ pip freeze > requirements.txt

但假设你要将所有的依赖项安装在已经制作好的requirements.txt 文件中,那么就运行这个命令。

   $ pip install -r requirements.txt

现在要设置Django项目本身,请继续阅读这篇文章。

我们首先需要检查Python是否正确安装。

使用bash或终端,输入如下命令。

我在我的机器上安装了Python 3.9.6 。你的可能不一样,完全没有问题。

   $ python --version
   Python 3.9.6

建议你无论如何都要安装Python3 。如果你没有安装Python,那么请到官方网站上根据你的操作系统下载最新的。

你已经在正确的轨道上了,继续阅读...

导航到你想安装Django项目的目录下,然后运行这个程序。

mkdir mydjangoproject
cd mydjangoproject

现在你在mydjangoproject 文件夹内。

Yaay!你做得很好。让我们来探索更多。

  1. 在当前目录下,如上所述创建虚拟环境文件夹。
$ virtualenv myenv

通过输入virtualenv --version 来验证这一点。

$ virtualenv --version
  1. 为了激活项目的myenv ,如果你是窗口用户,请运行这个。
source myenv/Scripts/activate 

但如果你使用的是Mac/Linux操作系统,请使用。

$ myenv/bin/activate
  1. 要在我们的虚拟环境中安装Django,请运行下面的命令。
 pip install django

你可以通过冻结requirements.txt 文件来验证这个安装。

$ pip freeze > requirements.txt

现在在你喜欢的代码编辑器中打开这个当前目录。requirements.txt 会出现,你可以查看为你安装的Django版本。

现在让我们通过运行以下命令来创建我们的Django项目django-admin startproject dj-project

$ django-admin startproject dj-project .

在命令中添加点是可选的。这样做的目的是,你的dj-project ,将在当前工作目录下创建。

在成功创建了dj-project ,现在运行下面的命令,在浏览器中打开带给你的http://127.0.0.1:8000/

$ python manage.py runserver

注意,这个命令python manage.py runserver ,总是为你的项目启动Django默认的服务器,在工作时必须让它运行。要退出服务器,只需按CTRL+C。

2.Django中的URL路由

一般来说,路由将用户在浏览器中输入的URL与视图中的精确匹配进行映射。这个路由从客户端的浏览器来回与服务器对话。

统一资源定位器,URL是一种地址,允许客户端通过HyperTextTransferProtocol HTTP请求联系到服务器。然后,服务器会渲染视图中返回的任何与路由匹配的HTML文件。

在Django应用程序中,有一个名为urls.py 的URL Python文件。这就是URL路由所处的位置,它具有路径、视图、名称和URL模式等功能。

Django应用程序中路由的一个有效例子urls.py

   from django.urls import path
   from . import views

   urlpatterns = [
      path('', views.index, name='index'),
      path('users/', views.userList, name='users'),
   ]

3.Django Model View Template (MVT)

(MVT)是MODEL VIEW TEMPLATE的首字母缩写。Django作为一个Web框架使用这种架构进行操作,而其他服务器端语言或框架使用MODEL VIEW CONTROLLER,即MVC。让我们来看看每个关键词。

MODEL控制着传入数据的特征和属性是什么样子的。开发人员在这个模型中描述数据将被收集和保存在数据库中的方式。

例如,模型类扩展自Django中构建的超级models.Model 类,这使得我们的models 可以通过实际调用models.PROPERTIES 来继承其所有属性。

在应用程序models.py ,我们将用这个Python类创建我们的MyModel 类。

   from django.db import models

   class MyModel(models.Model):
      title = models.CharField(max_length = 100)
      is_completed = models.BooleanField(default=False)
      date_created = models.DateField(auto_created=True)

      def __str___(self):
         return self.title

私有方法__str__ 的作用是,它有助于返回任何标题作为我们的模型在管理中的代表名称。

现在将模型迁移到创建迁移文件夹。

$ python manage.py makemigrations

运行这个命令,在应用程序中创建一个migration 文件夹。这里面存放的只是模型所需的SQL命令。

我们现在可以从DjangoSqlite3 迁移到默认数据库。

$ python manage.py migrate

请注意为你的项目创建的sqlite文件。

VIEW为每个URL请求返回渲染的HTML模板,不同的传入路线。这只不过是一个基于Python函数或类的视图,它通过在背后的逻辑之后从模型中返回一些数据来渲染模板。

视图的主要目的通常是接受来自模型的数据,并将其与模板HTML文件一起发送或映射。Django使用它的render方法,该方法需要三个参数,即request、template_to_load和context_dictionary。

这是一个在Django应用程序中功能性views.py 的例子。

   from django.shortcuts import render

   def myView(request):
      context = {}
      return render(request, index.html, context)

而这也是Django中基于类的视图。

   from django.views imoport TemplateView

   class MyViewClass(TemplateView):
      template_name = 'index.html'

请注意,基于类的视图不需要return

TEMPLATE在大多数情况下是你的HTML锅炉板,当用户来到渲染的URI时将会显示出来。它是界面从已保存的视图返回给客户端的地方。

4.Django管理界面

Django为开发者提供了一个包含应用程序中所有活动的仪表盘,顾名思义,它就是admin 。在管理界面中,可以对models.py制作的模型表中的所有行和列进行编辑。

管理员是由django.contrib Python模块扩展而来,为了让它如期工作,我们必须在项目urls.py ,并在安装的应用程序settings.py ,为它制定一个路由。

幸运的是,这在创建django项目时是默认的。

现在,我们必须在admin.py 中注册模型以便访问。

   from django.contrib import admin
   from .models import MyModel

   admin.site.register(MyModel)

然后创建一个超级用户账户,该账户可以访问管理员,并回答所有关于该账户所需凭证的问题。

$ python manage.py createsuperuser

完成这些后,在浏览器上粘贴URL,然后登录到账户http://127.0.0.1:8000/admin ,查看为你的项目准备的管理员。

5.Django默认表单系统

在后台使用Django对你这个开发者来说有很多的功能。在这些好处中,有一个是Dafult表单。要引用这个表单,可以通过两种方式进行。

  1. 如果需要,我们可以为表单使用数据库/模型属性。
   from .models import MyModel
   from django import forms

   class MyModelForm(forms.ModelForm):
      password = forms.PasswordInput()
      class Meta:
         model = MyModel
         fields = '__all__' 
         fields = ['title', 'is_completed', 'password']

注意我们只能在上面的代码里面使用其中一个字段。

  1. 我们也可以为表单使用Django内置的User
   from django.contrib import User
   from django import forms

   class MyModelForm(forms.ModelForm):
      class Meta:
         model = User
         fields = ['firstname', 'email', 'username', 'password']

完成了forms.py ,我们就可以把它带入视图,并为模板渲染。

6.在Django项目中添加自定义数据库

Django使用一个关系型数据库,如Sqlite3 ,这是默认的开发数据库。但在本节中,我想引导你完成添加你选择的自定义数据库的模式。

我们首先需要将我们要使用的数据库类型和工作平台下载到机器中。这可以通过在谷歌上做一点研究来完成。

实际的例子可以在下面找到,我使用了postgresql 数据库。

在下载和安装之后,我们可以在工作台中创建一个数据库名称并连接它。

在之前创建的dj-project 内的settings.py 文件中改变以下内容,将有助于你的项目利用创建的数据库。

   DATABASES = {
      'default': {
         'ENGINE': 'django.db.backends.postgresql',
         'NAME': 'db_name',
         'USER': 'db_user',
         'PASSWORD': ********,
         'HOST': 'localhost',
         'PORT': '5432',
      }
   }

我们将首先运行命令python manage.py makemigrations ,创建SQL查询,用于在数据库中创建一个表。

为了在数据库中创建一个表,我们可以运行python manage.py migrate 命令。

要使迁移运行。

python manage.py makemigrations

要应用迁移的运行。

python manage.py migrate

然后你就可以去确认在postgres工作台上为你的项目创建的带有行和列的表。

总结

Django作为一个框架,使后端Web开发变得简单和容易使用。通过这篇关于Django概念的简明文章,我恳请你去Django文档网站获取更多信息。