进入mysite
文件夹,在终端中输入:
$ cd /home/shiyanlou/Code/mysite
$ python3 manage.py startapp lib
lib的目录如下:
打开 lib/views.py
,输入以下代码:
# lib/views.py
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world!")
仅编写视图函数,并不能在Django页面上显示出来。如果想要看到效果,我们需要使用URL来映射到它。
在mysite/lib
目录里新建urls.py
文件,并输入以下代码:
# lib/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
这一步我们将应用lib
里视图函数与URL映射到了一起。
我们来详细讲解一下path()
函数,它共有4个参数:
参数 | 意义 | 是否必须 |
---|---|---|
route | route 是一个匹配 URL 的准则(类似正则表达式)。当 Django 响应一个请求时,它会从 urlpatterns 的第一项开始,按顺序依次匹配列表中的项,直到找到匹配的项。 | 必须 |
view | 当 Django 找到了一个匹配的准则,就会调用这个特定的视图函数,并传入一个 HttpRequest 对象作为第一个参数,被“捕获”的参数以关键字参数的形式传入。 | 必须 |
kwargs | 任意个关键字参数可以作为一个字典传递给目标视图函数。 | 可选 |
name | 为你的 URL 取名能使你在 Django 的任意地方唯一地引用它,尤其是在模板中。这个有用的特性允许你只改一个文件就能全局地修改某个 URL 模式。 | 可选 |
在上面的代码中,route
为空意味着我们可以直接用链接http://localhost:8000/lib/
访问该视图函数,view=view.index
是调用了view.py
中的index
视图,name
为index
代表我们可以在模板中用index来引用返回的变量。
接下来,我们需要向mysite/mysite/urls.py
告知使用应用lib
的视图。
输入以下代码:
# mysite/mysite/urls.py
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('lib/', include('lib.urls')),
path('admin/', admin.site.urls),
]
实现的原理就是使用了include()
函数,它允许应用其他的URLconfs。
比如使用这个地址进行请求时:http://localhost:8000/lib/
,首先在mysite/mysite/urls.py
中会截断与此项匹配的 URL 部分,也就是lib/
,然后将剩余的字符串发送到 URLconf 以供进一步处理。
到这里,我们就把index视图添加进了URLconf。
让我们来验证下它是否可以正常工作:
$ python3 manage.py runserver
使用浏览器访问http://localhost:8000/lib/