Django3.1.4中文文档(1)————快速开始!part1
首页 专栏 django 文章详情
0

Django3.1.4中文文档(1)————快速开始!part1

宫隅仁太 发布于 2 月 9 日

写在前面

该系列为读者首次翻译Django相关技术文档,主要作为学习查阅之用,如有错误,请指正,还望海涵!

getting started

第一次使用Django?第一次进行web开发?你来到了正确的地方!立刻开始阅读这一章节并开始运行吧!

Django概述

Django是在快节奏的新闻编辑室环境下所开发的,旨在快速便捷地进行web开发,本文档的目的是通过一些技术细节去了解Django是如何工作的,让我们立即开始吧!

编写您的第一个Django app,part 1

让我们通过示例进行学习。
通过本示例的学习,我们将引导你完成一个基本的民意调查应用app的创建工作,它将包括以下两部分。

一个可以查看民意并且进行投票的公共站点 一个允许您添加、改变、删除民意的管理站点

我们必须向您再次确认Django installed已经完成。您可以通过以下命令来确认Django是否安装以及版本。

python -m django --version

如果Django已经安装,那么您将可以看到版本信息,如果未安装,将会发生错误"No module named django"。
本次教程撰写是基于Django3.1,支持python3.6及更高版本,如果Django版本不符合,您可以查看对应版本的Django教程,或者更新Django到最新版本。如果您仍在使用较老版本的python,请确认使用相适应的Django版本。

Django version Python versions 1.11 2.7,3.4,3.5,3.6,3.7(added in 1.11.17) 2.0 3.4,3.5,3.6,3.7 2.1 3.5,3.6,3.7 2.2 3.5,3.6,3.7,3.8(added in 2.2.8),3.9(added in 2.2.17) 3.0 3.6,3.7,3.8,3.9(added in 3.0.11) 3.1 3.6,3.7,3.8,3.9(added in 3.1.3)
创建项目

如果这是您第一次使用Django,您将必须进行一些初始化操作,也就是说您需要自动生成一些代码来搭建Django工程,包括数据库的配置,Django选项配置以及应用程序配置。
打开命令行工具,cd到您希望存储代码的文件夹下,输入以下命令并运行

django-admin startproject mysite #创建项目mysite

这将在当前文件夹下创建一个mysite文件夹。
注意:请避免使用python内置关键词以及django常用词!

代码应该放在何处?

如果您的后端采用老版的PHP(不使用任何现代框架),您很有可能将代码放置于web服务器文件夹路径下(比如 /var/www)。在Django框架内并不这样做。因为这样做会产生一些风险,其他人可能通过网络查看您的代码,不利于安全。

startproject命令创建文件夹如下

mysite/
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        asgi.py
        wsgi.py

这些文件作用如下:

外部的mysite文件夹是整个项目的容器,它的命名不影响Django的运行,因此您凭借喜好任意修改它 manage.py:一个命令行实用程序,可以让您通过各种方式与此Django项目进行交互。 内部的mysite文件夹是一个该项目需要使用的Python扩展包,在您需要引入文件夹内的任何文件时需要使用到它的命名(比如 mysite.urls)。 mysite/__init__.py:空文件,旨在告诉python解释器,该文件夹应被解释为一个python扩展包。 mysite/setting.py:此Django项目的配置文件。 mysite/urls.py:此Django项目的Urls路径文件,用于定义url。 mysite/asgi.py:为您的Django项目提供兼容ASGI的服务器的入口。 mysite/wsgi.py:为您的Django项目提供兼容WSGI的服务器的入口。
开发服务器

确认您的Django项目可以正常运行。cdmysite文件夹内并运行以下命令

python manage.py runserver

您将看到在命令行内看到以下输出

Performing system checks...
System check identified no issues (0 silenced).
You have unapplied migrations; your app may not work properly until they are applied.
Run 'python manage.py migrate' to apply them.
January 22, 2021 - 15:50:53
Django version 3.1, using settings 'mysite.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C.

通过这一行命令,一个纯粹由python编写的Django开发服务器开始运行,之所以包含这样一个功能是为了使得开发更加迅速,因为不需要进行服务器的配置,比如Apache服务器——直到您准备好将项目运用到实际产品中。

注意:请不要将本开发服务器运行到实际运营产品中,(我们在web框架领域是专业的!而非在服务器领域!)

现在服务器已经开始运行,通过web浏览器访问http://127.0.0.1:8000/,您将会看到一个"Congratulations"界面,服务器正常运行!

改变端口

runserver命令默认在8000端口运行开发服务器。
如果您想改变端口,加入一个命令行参数即可,示例如下,服务器运行在8080端口

python manage.py runserver 8080

如果您想改变服务器IP地址,将IP地址与端口一同传递到参数中即可,示例如下,可以监听所有能访问到该IP地址的web请求。

python manage.py runserver 0:8000

其中0是0.0.0.0的简写形式。

自动重载服务器

开发服务器将会根据需要对于每一次web请求重新加载python代码。也就是说当您更改代码后无需重启服务器。然而有一些操作比如添加文件并不会引起服务器重载,因此需要在完成更改操作后重启服务器。

创建民意调查app

现在项目环境已经准备就绪!
您在Django中编写的每个应用程序都包含一个遵循特定约定的Python包。Django附带了一个实用程序,该实用程序会自动生成应用程序的基本目录结构,因此您可以专注于编写代码而不是创建目录。

projects 与 apps

projects与apps之间有什么不同?app是一个可以实现一定功能的网络应用程序——比如网络博客系统、公共记录数据库或者一个小型的民意调查app。而project是针对一个特定网站的一系列app及其配置的集合,一个project可以包含多个apps,一个app可以存在于多个projects。

您的apps可以存在于python路径下任何地方。在本例教程中,我们创建的poll app与manage.py处于同一目录,可作为顶层模块直接引入。
请确认manage.py处于当前目录,并运行以下命令

python manage.py startapp polls

该命令将会创建一个名为polls的文件夹,结构如下

polls/
    __init__.py
    admin.py
    apps.py
    migrations/
        __init__.py
    models.py
    tests.py
    views.py
编写您的第一个view文件

现在开始编写第一个view文件。打开文件polls/views.py并且写入以下python代码。

from django.http import HttpResponse

def index(request):
    return HttpResponse("Hello, world. You're at the polls index.")

这是一个最简单的视图函数,为了调用该函数,我们需要将其映射到一个URL——因此需要进行URL配置。
首先创建urls.py文件,您的app目录树应当如下所示。

polls/
    __init__.py
    admin.py
    apps.py
    migrations/
        __init__.py
    models.py
    tests.py
    urls.py
    views.py

polls/urls.py中写入以下代码

from django.urls import path
from . import views
urlpatterns = [
    path('', views.index, name='index'),
]

下一步将url根文件配置为polls.urls模块,在mysite/urls.py文件中,引入模块django.urls.include并且在urlpatterns列表中插入include(),具体如下所示。

from django.contrib import admin
from django.urls import include, path
urlpatterns = [
    path('polls/', include('polls.urls')),
    path('admin/', admin.site.urls),
]

include()功能函数允许引入其他url配置文件,无论什么时候Django引入了include(),都会将此处作一个分割,剩余的字符串发送到所包含的URLconf中进行进一步处理。
include()方法可以很好地实现网址即插即用。polls中的网址配置在文件polls/urls中,它们可以放置在"/polls/","/content/polls/"或者其他路径下,应用程序依然可以很好地运行。

什么时候使用include()?

您应该在包含其他网址格式时使用include()admin.site.urls是唯一一个例外。

现在您已经将index视图函数映射到url地址中,用以下命令确认它已经正常运行。

python manage.py runserver

在浏览器中进入网址http://localhost:8000/polls/,您将看到"Hello,world.You're at the polls index",这是您在index视图函数中所定义的。

path() 参数:route
路径是一个包含URL格式的字符串。每当处理请求时,Django会在urlpatterns列表中依次寻找匹配请求的网址路径,并且只会匹配一次。
路径格式并不会搜索GET和POST参数。比如说请求地址https://www. example.com/myapp/,路径配置文件会寻找myapp/路径所对应的视图文件,请求地址https://www. example.com/myapp/?page=3,路径配置文件依旧会寻找myapp/
path() 参数:view
每当Django找到一个匹配的路径,将会调用一个以HttpRequest对象作为第一个参数的视图函数,其余捕获值将作为关键词参数传递到视图函数中。之后将做一个示例讲解。
path() 参数:kwargs
可以在字典中可以将任意关键字参数传递给目标视图。 在本教程中,我们不会使用Django的此功能。
path() 参数:name
为您的URL命名可以在Django的其他部分,特别是在模板文件中明确地引用它。这项强大的功能可让您仅更改单个文件的一个参数即可对项目的URL格式进行全局更改。

django
本文系 翻译 ,阅读原文
https://docs.djangoproject.com/en/3.1/
阅读 59 发布于 2 月 9 日
收藏
分享
django中文文档
django中文文档
关注专栏
avatar
宫隅仁太

为自己学过的东西写一点文章记录一下~

1 声望
0 粉丝
关注作者
0 条评论
得票 时间
提交评论
avatar
宫隅仁太

为自己学过的东西写一点文章记录一下~

1 声望
0 粉丝
关注作者
宣传栏
目录

写在前面

该系列为读者首次翻译Django相关技术文档,主要作为学习查阅之用,如有错误,请指正,还望海涵!

getting started

第一次使用Django?第一次进行web开发?你来到了正确的地方!立刻开始阅读这一章节并开始运行吧!

Django概述

Django是在快节奏的新闻编辑室环境下所开发的,旨在快速便捷地进行web开发,本文档的目的是通过一些技术细节去了解Django是如何工作的,让我们立即开始吧!

编写您的第一个Django app,part 1

让我们通过示例进行学习。
通过本示例的学习,我们将引导你完成一个基本的民意调查应用app的创建工作,它将包括以下两部分。

一个可以查看民意并且进行投票的公共站点 一个允许您添加、改变、删除民意的管理站点

我们必须向您再次确认Django installed已经完成。您可以通过以下命令来确认Django是否安装以及版本。

python -m django --version

如果Django已经安装,那么您将可以看到版本信息,如果未安装,将会发生错误"No module named django"。
本次教程撰写是基于Django3.1,支持python3.6及更高版本,如果Django版本不符合,您可以查看对应版本的Django教程,或者更新Django到最新版本。如果您仍在使用较老版本的python,请确认使用相适应的Django版本。

Django version Python versions 1.11 2.7,3.4,3.5,3.6,3.7(added in 1.11.17) 2.0 3.4,3.5,3.6,3.7 2.1 3.5,3.6,3.7 2.2 3.5,3.6,3.7,3.8(added in 2.2.8),3.9(added in 2.2.17) 3.0 3.6,3.7,3.8,3.9(added in 3.0.11) 3.1 3.6,3.7,3.8,3.9(added in 3.1.3)
创建项目

如果这是您第一次使用Django,您将必须进行一些初始化操作,也就是说您需要自动生成一些代码来搭建Django工程,包括数据库的配置,Django选项配置以及应用程序配置。
打开命令行工具,cd到您希望存储代码的文件夹下,输入以下命令并运行

django-admin startproject mysite #创建项目mysite

这将在当前文件夹下创建一个mysite文件夹。
注意:请避免使用python内置关键词以及django常用词!

代码应该放在何处?

如果您的后端采用老版的PHP(不使用任何现代框架),您很有可能将代码放置于web服务器文件夹路径下(比如 /var/www)。在Django框架内并不这样做。因为这样做会产生一些风险,其他人可能通过网络查看您的代码,不利于安全。

startproject命令创建文件夹如下

mysite/
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        asgi.py
        wsgi.py

这些文件作用如下:

外部的mysite文件夹是整个项目的容器,它的命名不影响Django的运行,因此您凭借喜好任意修改它 manage.py:一个命令行实用程序,可以让您通过各种方式与此Django项目进行交互。 内部的mysite文件夹是一个该项目需要使用的Python扩展包,在您需要引入文件夹内的任何文件时需要使用到它的命名(比如 mysite.urls)。 mysite/__init__.py:空文件,旨在告诉python解释器,该文件夹应被解释为一个python扩展包。 mysite/setting.py:此Django项目的配置文件。 mysite/urls.py:此Django项目的Urls路径文件,用于定义url。 mysite/asgi.py:为您的Django项目提供兼容ASGI的服务器的入口。 mysite/wsgi.py:为您的Django项目提供兼容WSGI的服务器的入口。
开发服务器

确认您的Django项目可以正常运行。cdmysite文件夹内并运行以下命令

python manage.py runserver

您将看到在命令行内看到以下输出

Performing system checks...
System check identified no issues (0 silenced).
You have unapplied migrations; your app may not work properly until they are applied.
Run 'python manage.py migrate' to apply them.
January 22, 2021 - 15:50:53
Django version 3.1, using settings 'mysite.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C.

通过这一行命令,一个纯粹由python编写的Django开发服务器开始运行,之所以包含这样一个功能是为了使得开发更加迅速,因为不需要进行服务器的配置,比如Apache服务器——直到您准备好将项目运用到实际产品中。

注意:请不要将本开发服务器运行到实际运营产品中,(我们在web框架领域是专业的!而非在服务器领域!)

现在服务器已经开始运行,通过web浏览器访问http://127.0.0.1:8000/,您将会看到一个"Congratulations"界面,服务器正常运行!

改变端口

runserver命令默认在8000端口运行开发服务器。
如果您想改变端口,加入一个命令行参数即可,示例如下,服务器运行在8080端口

python manage.py runserver 8080

如果您想改变服务器IP地址,将IP地址与端口一同传递到参数中即可,示例如下,可以监听所有能访问到该IP地址的web请求。

python manage.py runserver 0:8000

其中0是0.0.0.0的简写形式。

自动重载服务器

开发服务器将会根据需要对于每一次web请求重新加载python代码。也就是说当您更改代码后无需重启服务器。然而有一些操作比如添加文件并不会引起服务器重载,因此需要在完成更改操作后重启服务器。

创建民意调查app

现在项目环境已经准备就绪!
您在Django中编写的每个应用程序都包含一个遵循特定约定的Python包。Django附带了一个实用程序,该实用程序会自动生成应用程序的基本目录结构,因此您可以专注于编写代码而不是创建目录。

projects 与 apps

projects与apps之间有什么不同?app是一个可以实现一定功能的网络应用程序——比如网络博客系统、公共记录数据库或者一个小型的民意调查app。而project是针对一个特定网站的一系列app及其配置的集合,一个project可以包含多个apps,一个app可以存在于多个projects。

您的apps可以存在于python路径下任何地方。在本例教程中,我们创建的poll app与manage.py处于同一目录,可作为顶层模块直接引入。
请确认manage.py处于当前目录,并运行以下命令

python manage.py startapp polls

该命令将会创建一个名为polls的文件夹,结构如下

polls/
    __init__.py
    admin.py
    apps.py
    migrations/
        __init__.py
    models.py
    tests.py
    views.py
编写您的第一个view文件

现在开始编写第一个view文件。打开文件polls/views.py并且写入以下python代码。

from django.http import HttpResponse

def index(request):
    return HttpResponse("Hello, world. You're at the polls index.")

这是一个最简单的视图函数,为了调用该函数,我们需要将其映射到一个URL——因此需要进行URL配置。
首先创建urls.py文件,您的app目录树应当如下所示。

polls/
    __init__.py
    admin.py
    apps.py
    migrations/
        __init__.py
    models.py
    tests.py
    urls.py
    views.py

polls/urls.py中写入以下代码

from django.urls import path
from . import views
urlpatterns = [
    path('', views.index, name='index'),
]

下一步将url根文件配置为polls.urls模块,在mysite/urls.py文件中,引入模块django.urls.include并且在urlpatterns列表中插入include(),具体如下所示。

from django.contrib import admin
from django.urls import include, path
urlpatterns = [
    path('polls/', include('polls.urls')),
    path('admin/', admin.site.urls),
]

include()功能函数允许引入其他url配置文件,无论什么时候Django引入了include(),都会将此处作一个分割,剩余的字符串发送到所包含的URLconf中进行进一步处理。
include()方法可以很好地实现网址即插即用。polls中的网址配置在文件polls/urls中,它们可以放置在"/polls/","/content/polls/"或者其他路径下,应用程序依然可以很好地运行。

什么时候使用include()?

您应该在包含其他网址格式时使用include()admin.site.urls是唯一一个例外。

现在您已经将index视图函数映射到url地址中,用以下命令确认它已经正常运行。

python manage.py runserver

在浏览器中进入网址http://localhost:8000/polls/,您将看到"Hello,world.You're at the polls index",这是您在index视图函数中所定义的。

path() 参数:route
路径是一个包含URL格式的字符串。每当处理请求时,Django会在urlpatterns列表中依次寻找匹配请求的网址路径,并且只会匹配一次。
路径格式并不会搜索GET和POST参数。比如说请求地址https://www. example.com/myapp/,路径配置文件会寻找myapp/路径所对应的视图文件,请求地址https://www. example.com/myapp/?page=3,路径配置文件依旧会寻找myapp/
path() 参数:view
每当Django找到一个匹配的路径,将会调用一个以HttpRequest对象作为第一个参数的视图函数,其余捕获值将作为关键词参数传递到视图函数中。之后将做一个示例讲解。
path() 参数:kwargs
可以在字典中可以将任意关键字参数传递给目标视图。 在本教程中,我们不会使用Django的此功能。
path() 参数:name
为您的URL命名可以在Django的其他部分,特别是在模板文件中明确地引用它。这项强大的功能可让您仅更改单个文件的一个参数即可对项目的URL格式进行全局更改。