使用Django时需要学习的核心概念
在今天的讨论中,我将向你介绍这个被称为Django的伟大的Python后台框架。在Web应用开发领域,有不同的服务器端语言和框架,Django就是其中之一。
说白了,Django只是几年前建立在一种叫做Python的著名编程语言之上的框架。在这个我最喜欢的后端框架的旅程中,请和我一起探索更多。
Django使用了一个叫做pip的Python包,这在安装了Python之后就变得非常方便。Django被用来配置网络应用的服务器端,如Shopify、Google、Pinterest、Instagram等。
惊讶吧!是的,像上述这些公司都使用Django进行后台操作。
Django网络框架允许开发者通过使用其概念,实际与应用程序的用户界面建立联系,从而连接服务器端。
本文将介绍几个需要掌握的概念,无论你是刚开始学习这个框架还是有一些经验。
主要收获
在本文结束时,读者将对以下主题有所了解。
- Django项目结构
- Django中的url路由如何工作
- MVT作为Django中的一个概念的含义
- 了解Django管理界面
- Django默认表单系统
- 添加自定义数据库到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!你做得很好。让我们来探索更多。
- 在当前目录下,如上所述创建虚拟环境文件夹。
$ virtualenv myenv
通过输入virtualenv --version
来验证这一点。
$ virtualenv --version
- 为了激活项目的
myenv
,如果你是窗口用户,请运行这个。
source myenv/Scripts/activate
但如果你使用的是Mac/Linux操作系统,请使用。
$ myenv/bin/activate
- 要在我们的虚拟环境中安装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表单。要引用这个表单,可以通过两种方式进行。
- 如果需要,我们可以为表单使用数据库/模型属性。
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']
注意我们只能在上面的代码里面使用其中一个字段。
- 我们也可以为表单使用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文档网站获取更多信息。