Django Urls
我们将建立第一个网页:你的博客的主页!但是首先,让我们先学习一点 Django URLs 的知识。
什么是 URL ?
URL 是一个网址。 当你访问一个网站时,你可以看到 URL —— 它在浏览器的地址栏里。(是的!127.0.0.1:8000
是一个 URL!
并且https://djangogirls.org
也是一个 URL):
每一个互联网的网页都需要自己的 URL。 这样,当打开一个 URL 时,你的应用程序才知道应该展现给用户什么内容。 在 Django 中,我们使用一种叫做 URLconf
(URL 配置)的机制 。 URLconf 是一套模式,即 Django 会匹配被请求的 URL 并找到正确的视图 ( view )。
URL 在 Django 中如何工作?
让我们在编辑器打开 mysite/urls.py 看看它长什么样子:
"""mysite URL Configuration
[...]
"""
from django.contrib import admin
from django.urls import path
urlpatterns = [
path('admin/', admin.site.urls),
]
正如你所看到的,Django 已经为我们放了一些东西在里面。
在三引号 ('''
or """
) 之间的行是文档字符串 —— 你可以把它们写在文档、类、方法的开头来描述代码做了什么。这些行都不会被 Python 运行。
你在上一章节中访问过的 admin URL 已经在里面了:
path('admin/', admin.site.urls),
这行代码意味着,所有以 admin/
开头的 URL ,Django 都会查找对应的
视图( view ) 。这样的话,我们可以包含大量的 admin URLs 而不需要将它们全部放在这个小小的文件里 —— 代码会更具有可读性、更整洁。
你的第一个 Django URL!
是时候创建我们第一个 URL 了!我们想用 '127.0.0.1:8000/' 作为博客的首页,并展示一个帖子列表。
我们也想保持 mysite/urls.py
文件的简洁,所以我们从 blog
应用导出 URLs 到 mysite/urls.py
文件。
来吧,添加一行代码导入 blog.urls
。你还需要改变 from django.urls…
行,因为在这里我们需要使用 include
函数,所以你需要将它的导入语句添加到这一行。
你的 mysite/urls.py
文件现在看起来应该像这样:
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('blog.urls')),
]
现在, Django 会将所有进入 '127.0.0.1:8000/' 的请求重定向到 blog.urls
,并查看那里进一步的指令。
blog.urls
在目录 blog
创建一个名为 urls.py
的空文件,并在代码编辑器打开它。好了,加入下面两行:
from django.urls import path
from . import views
这里我们从 blog
程序导入 Django 的函数 path
和所有 views
(虽然现在我们还没有,不过很快就可以得到它们!)
然后,我们可以加入我们第一个 URL 模式:
urlpatterns = [
path('', views.post_list, name='post_list'),
]
你可以看到,我们在根 URL 配置了一个名为post_list
的view
。这个 URL 模式将匹配一个空字符串,并且 Django 的 URL 解析器将忽略完整 URL 路径前缀的域名 (如, 127.0.0.1:8000/)。这个模式告诉 Django,如果有人在 '127.0.0.1:8000/' 地址进入你的网站,那么 views.post_list
是正确的去处。
最后的部分,name='post_list'
, 是 URL 的名字,用来唯一标识对应的 view。 它可以跟 view 的名字一样,也可以完全不一样。 在项目后面的开发中,我们将会使用命名的 URL ,所以在应用中为每一个 URL 命名是重要的。我们应该尽量让 URL 的名字保持唯一并容易记住。
假如你尝试访问 127.0.0.1:8000/ ,你会发现 'web page not available' 的错误。这是因为服务器(记得输入 runserver
吗?)不再运行。查看你的服务器控制台来看看为什么。
你的控制台正在展示一个错误,不过不用担心——它其实是非常有用的:它在告诉你 这里 没有 'post_list' 属性。那是尝试查找并使用的 view 的名字,但是我们还没有创建它。这样的话,你的 /admin/
将不会工作。不要担心,我们会抵达那里的。假如你看到一个不同的错误,尝试重启你的 web 服务器。为了重启,在运行 web 服务器的控制台窗口,按下 Ctrl+C (同时按下控制键和 C 键)。在 Windows 系统下,你也许需要按下 Ctrl+Break。然后运行 python manage.py runserver
命令重启服务器。
假如你想要了解更多关于 Django URLconfs,查看官方文档: docs.djangoproject.com/en/2.2/topi...
本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。