Django 教程第一部分,附带解释

首先

这是一个希望用简单易懂的方式,附上django教程解释,让初学者能够理解并学习的项目。

对应

    • pythonはなんとなくわかってるけど、djangoを覚えたい

 

    業務でdjango触ってたけど、きちんと理解したい

本文的对象是上述的人士。
由于环境是使用Mac进行操作,因此希望Windows用户能将其转化为Windows环境并跟随进行。

目录

    • 【解説付き】Django チュートリアル その1

 

    • 【解説付き】Django チュートリアル その2 -前編-

 

    【解説付き】Django チュートリアル その2 -後編-

准备

在这里,我们将从安装开始并进行。

安装Python

在我们公司中,由于同时运行着Python 2.x的项目,我们会使用pyenv来创建虚拟环境。
关于pyenv、virtualenv和Python的安装,我建议您参考这里的pyenv和pyenv-virtualenv的环境设置进行安装。
我个人认为通过git安装更加方便处理版本升级和卸载,所以我选择使用git进行安装。

安装Django

django需要使用pip命令来进行安装。

$ pip install django
Collecting django
  Downloading https://files.pythonhosted.org/packages/d6/57/66997ca6ef17d2d0f0ebcd860bc6778095ffee04077ca8985928175da358/Django-2.2.4-py3-none-any.whl (7.5MB)
     |████████████████████████████████| 7.5MB 5.5MB/s
Collecting sqlparse (from django)
  Using cached https://files.pythonhosted.org/packages/ef/53/900f7d2a54557c6a37886585a91336520e5539e3ae2423ff1102daf4f3a7/sqlparse-0.3.0-py2.py3-none-any.whl
Collecting pytz (from django)
  Downloading https://files.pythonhosted.org/packages/87/76/46d697698a143e05f77bec5a526bf4e56a0be61d63425b68f4ba553b51f2/pytz-2019.2-py2.py3-none-any.whl (508kB)
     |████████████████████████████████| 512kB 37.4MB/s
Installing collected packages: sqlparse, pytz, django
Successfully installed django-2.2.4 pytz-2019.2 sqlparse-0.3.0

安装后的确认

$ pip freeze
Django==2.2.4
pytz==2019.2
sqlparse==0.3.0

MySQL的安装

我们的公司使用GCP,因此我们使用MySQL 5.7版本。在Mac上安装MySQL 5.7的步骤,请参考此处使用[mac] Homebrew来安装MySQL 5.7并进行初始设置。

创建项目

使用我们之前安装的django,来创建项目的基本设置。

$ django-admin startproject mysite

使用刚刚安装的django命令(django-admin)来创建项目,这条命令的意思是创建一个名为mysite的项目。请注意,django-admin命令在项目创建时才会出现。

スクリーンショット 2019-08-14 2.55.18.png

我的网站

在执行django-admin startproject mysite命令后,会在mysite指定的目录中生成文件。
mysite是项目的名称。

管理.py

这是一个用于执行各种操作 Django 项目的命令行工具。
在创建项目后,我们将使用 manage 命令而不是 django-admin。

我的网站/我的网站

这是mysite项目的mysite包。在调用时,可以用import mysite.urls指定。请注意,必须有__init__.py文件才能被识别为一个包。

我的网站/我的网站/__init__.py

这个文件是一个空文件,用来告诉 Python 这个目录是一个 Python 包。

我的网站/我的网站/设置.py

这是Django项目的配置文件。

我的网站/我的网站/网址.py

在这里定义URL的结构。
在这里定义URL与视图的对应关系。

我的网站/wsgi.py

这是与WSGI兼容的Web服务器的项目启动入口点。关于此的详细信息本次我们将忽略。

2. 开发服务器

在本地启动

在 manage.py 文件所在的目录中执行下面的命令将启动一个简易服务器。

$ python manage.py runserver

Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).

You have 17 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.

August 14, 2019 - 05:21:51
Django version 2.2.4, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

在这种状态下,当您在浏览器中访问 http://127.0.0.1:8000/,如果出现下面这样的画面,就代表成功了!

django_local2.gif

关于港口

URL中的8000是端口号。

端口是一种类似门的东西,在通信时用来进行通行。

端口号范围从0到65535,大部分已经被分配。请查阅维基百科。

比如说,在浏览器中访问http://xxxxx.com这样的网站时,会经过80号端口。

就像https://xxxxx.com一样,https会通过端口443。

同时,可能需要同时启动Django程序,或与其他程序同时启动时改变端口号。

欲使其在8080端口启动,请参照以下方式。

$ python manage.py runserver 8080

另外,如果想要指定IP进行访问,可以使用以下命令使其能够通过本地IP进行访问。

$ python manage.py runserver 0:8000

0:8000的0是0.0.0.0的快捷方式,因此也可以等同于0.0.0.0。

当运行服务器时,它会自动重新加载。
如果修改了代码,它将会自动重新加载,无需重新启动。
(在出现错误等情况下可能需要重新启动)

创建应用程序

创建一个民意调查应用程序

我已经准备好开始开发Django了。

按照教程的指导,让我们来创建一个名为Polls的应用程序。

请进入与manage.py相同的目录,并尝试执行以下命令。

$ python manage.py startapp polls

会创建一个名为polls的包和初始设置。

スクリーンショット 2019-08-15 16.33.58.png

创建一个视图

请打开polls/views.py文件,并写下以下Python代码。

from django.http import HttpResponse


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

这个视图只是用来作为响应(输出)仅包含”Hello, world. You’re at the polls index.”这句话的视图。

创建URLs

为了执行View,需要将其与URL相对应。
为了定义URL,创建一个名为polls/urls.py的文件。

スクリーンショット 2019-08-15 16.33.58.png
from django.urls import path

from . import views

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

在urlpatterns中,如果以”(指定なし)”访问,将调用之前创建的views中的index函数。 关于”(指定なし)”的说明将在稍后提供。

将上述创建的URL定义添加到根URLconf中。
在 mysite/urls.py 文件中,添加导入 include 的 django.urls。
在 urlpatterns 列表中插入 polls,其中 include(‘polls.urls’) 表示的是指 polls/urls.py。

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

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

在此设置下,启动本地服务器。

$ python manage.py runserver

当在浏览器中访问http://127.0.0.1:8000/polls/时,会调用polls/views.py中的index函数。

你好,世界。你在投票索引页。

スクリーンショット 2019-08-15 17.42.56.png

上述的“(指定なし)”是指如果在polls/之后没有指定任何内容。
如果需要采用polls/index这样的形式,需指定index,
路径为:path(‘index’, views.index, name=’index’)。

关于 path 函数

path() 函数接收四个参数。其中 route 和 view 是必需的,kwargs 和 name 是可选的。


路线

路由是一个包含 URL 模式的字符串。当处理请求时,Django 从 urlpatterns 中的第一个模式开始,依次向下查找列表。
它会将请求的 URL 与每个模式进行比较,直到找到匹配的项为止。


观点

当Django找到匹配正则表达式的时候,Django会调用指定的视图函数。


可变关键字参数 (kwargs)

您可以将任意的关键字参数作为字典传递给目标视图。这个功能在教程中不会用到。


名字

如果给URL命名,那么在处理过程中就更容易引用(更易处理)。特别是在模板中尤为有效。

总结

这个部分是Django教程的第一部分。

我认为对于已经接触过Django或精通多种语言的人来说,尽管对初学者来说会有许多难以理解的部分。
我希望通过在官方教程中添加补充信息来帮助理解。

首先,我认为最好是从尝试开始,逐渐适应下去。

请尝试用轻松的态度阅读教程和文档,就像查字典一样,当遇到困惑时回头查看一下,理解会逐渐加深。初学者可以以浏览的方式阅读,只需要一点点动力就行。

希望你能继续阅读前一篇《第一次Django应用开发-上篇》,这是关于创建Django应用的第二部分。

 

广告
将在 10 秒后关闭
bannerAds