《Tango with Django》-第3章 Django基础

3.2 创建 Django 项目

进入 workspace 目录,执行下述命令,新建一个 Django 项目:$ django-admin.py startproject tango_with_django_project
此时你会发现,你的 workspace 目录中出现了与项目同名的一个目录,即 tango_with_django_project。在这个目录中你会看到两个内容:
❏ 另一个与项目同名的目录
❏ 一个 Python 脚本,名为 manage.py
在这里插入图片描述

在本书中,我们将把内部那个 tango_with_django_project 目录称为项目配置目录。在这个目录中,你会看到 4 个 Python 脚本,下面简单介绍一下,后文再详细说明:
init.py:一个空 Python 脚本,存在的目的是告诉 Python 解释器,这个目录是一个Python 包;
❏ settings.py:存放 Django 项目的所有设置;
❏ urls.py:存放项目的 URL 模式;
❏ wsgi.py:用于运行开发服务器和把项目部署到生产环境的一个 Python 脚本。
在这里插入图片描述
你现在就可以使用 manage.py 脚本,执行下述命令试试:
$ python manage.py runserver
在这里插入图片描述

3.3 创建 Django 应用

在 Django 项目所在的目录(例如 /tango_with_django_project)中执行下述命令:
$ python manage.py startapp rango
startapp 目录在项目的根目录中创建一个新目录,你可能猜到了,这个目录名为 rango,其中包含一些 Python 脚本:
init.py:与前面那个的作用完全一样;
❏ admin.py:注册模型,让 Django 为你创建管理界面;
❏ apps.py:当前应用的配置;
❏ models.py:存放应用的数据模型,即数据的实体及其之间的关系;
❏ tests.py:存放测试应用代码的函数;
❏ views.py:存放处理请求并返回响应的函数;
❏ migrations 目录:存放与模型有关的数据库信息。
在这里插入图片描述

在动手创建模型和视图之前,必须告诉 Django 项目这个新应用的存在。为此,要修改项目配置目录中的 settings.py 文件。打开那个文件,找到 INSTALLED_APPS 列表,把 rango 添加到末尾:

INSTALLED_APPS = [
	'django.contrib.admin',
	'django.contrib.auth',
	'django.contrib.contenttypes',
	'django.contrib.sessions',
	'django.contrib.messages',
	'django.contrib.staticfiles',
	'rango', ]

3.4 编写视图

在你选择的 IDE 中打开新建的 rango 目录里的 views.py 文件。把 # Create your views here 这行注释删掉,得到一个空文件。
然后,写入下述代码:

from django.http import HttpResponse
def index(request):
	return HttpResponse("Rango says hey there partner!")

有了视图还不行,为了让用户能访问视图,要把一个统一资源定位地址(Uniform Resource Locator,URL)映射到视图上。
为此,打开项目配置目录中的 urls.py 文件,在 urlpatterns 中添加一行代码:

from django.contrib import admin
from django.urls import path
from rango import views
from django.conf.urls import url

urlpatterns = [
    url(r'^$', views.index, name='index'),
    url(r'^admin/', admin.site.urls),
]

# 在python3中,下面的方法运行有问题
#urlpatterns = [
#    path('admin/', admin.site.urls),
#    path('^$',views.index,name='index')
#]

新加的那行代码把根 URL 映射到 rango 应用的 index 视图上。启动开发服务器(python manage.py runserver),访问 http://127.0.0.1:8000 或你指定的其他地址。你将看到 index 视图渲
染的输出。
在这里插入图片描述

3.5 映射 URL

为了提升模块化程度,我们可以换种方式把入站 URL 映射到视图上,而不直接在项目层设置。首先,要修改项目的 urls.py 文件,把针对 Rango 应用的请求交给 Rango 应用处理。然后,在 Rango应用中指定如何处理请求。
首先,打开项目配置目录中的 urls.py 文件。相对 workspace 目录而言,这个文件的地址是<work_space>/tango_with_django_project/tango_with_django_project/urls.py。把 urlpatterns 列表改成下面这样:

from django.contrib import admin
from django.urls import path
from rango import views
from django.conf.urls import include
from django.conf.urls import url

urlpatterns = [
    url(r'^$', views.index, name='index'),
    url(r'^rango/',include('rango.urls')),
    # 上面的映射把以 rango/ 开头的 URL 交给 rango 应用处理
    url(r'^admin/', admin.site.urls),
]

可以看出,urlpatterns 是个 Python 列表。新增的映射寻找能匹配 ^rango/ 模式的 URL。遇到这样的 URL 时,rango/ 后面的部分传给 Rango,由 rango.urls 处理。这一步是通过django.conf.urls 模块中的 include() 函数实现的。
这是一种分段处理 URL 字符串的方式,如图 3-2 所示。这里,完整的 URL 先去掉域名,余下的部分(rango/)传给 tango_with_django 项目,找到匹配的映射后,再把 rango/ 去掉,把空字符串传给 rango 应用处理。
在这里插入图片描述
根据上述设置,我们要在 rango 应用的目录中新建 urls.py 文件,让它处理余下的 URL(即把空字符串映射到 index 视图上):

from django.conf.urls import url
from rango import views

urlpatterns = [
    url(r'^$',views.index,name='index')
]

这段代码先导入 Django 处理 URL 映射的函数和 Rango 应用的 views 模块,然后在 urlpatterns列表中调用 url 函数映射 index 视图。
在这里插入图片描述

3.6 基本流程

本章内容可以总结为一系列操作。这一节给出我们所执行的两个任务的操作步骤。如果以后记不得了,可以随时翻阅。

  • 创建 Django 项目
    ➊ 执行 python django-admin.py startproject 命令,其中 是想创建的项目名称。
  • 创建 Django 应用
    ➊ 执行 python manage.py startapp 命令,其中 是想创建的应用名称。
    ➋ 把应用名称添加到项目配置目录中的 settings.py 文件里,放到INSTALLED_APPS 列表的末尾,告诉 Django 项目这个应用的存在。
    ➌ 在项目的 urls.py 文件中添加一个映射,指向新建的应用。
    ➍ 在应用的目录中新建 urls.py 文件,把入站 URL 与视图对应起来。
    ➎ 在应用的 view.py 文件中编写所需的视图,确保视图返回一个 HttpResponse 对象。

小结:

  • url写法:
urlpatterns = [
    url(r'^$', views.index, name='index'),
    url(r'^admin/', admin.site.urls),
]
  • url拆分:
    完整的 URL 先去掉域名,余下的部分(rango/)传给 tango_with_django 项目,找到匹配的映射后,再把 rango/ 去掉,把空字符串传给 rango 应用处理。

猜你喜欢

转载自blog.csdn.net/m0_46629123/article/details/112137559