关键词

Django零基础入门之路由path和re_path详解

我将详细讲解“Django零基础入门之路由path和re_path详解”的完整攻略,包括两条示例说明。

什么是Django路由?

Django路由是负责将 URL 转化为视图的函数或方法的机制。路由将 URL 映射到相应的视图上,以处理用户发出的请求。 Django路由规则都存储在每一个应用的 urls.py 文件中。

path路由

在 Django 2.0 后,引入了 path() 来代替原来的 url() 函数作为路由。用法如下:

from django.urls import path
from . import views

urlpatterns = [
    path('hello/', views.say_hello, name='hello'),
]
  • path() 函数接收两个必需的参数:路由规则和视图函数。
  • 第三个参数是一个可选的参数,表示该 URL 的 name 属性。
  • URL 路由中的末尾斜杠非常重要,如果在 URL 的字符串末尾添加了一个斜线,它会导致 Django 无法匹配 URL。

re_path路由

当path() 无法满足你的路由需求时,就可以用到 re_path() 函数。它接受的第一个参数是正则表达式,后面的参数可选。其中,第二个参数是视图函数,之后是 URL 的 name 属性。如下所示:

from django.urls import re_path
from . import views

urlpatterns = [
    re_path(r'hello/(?P<name>\w+)/', views.say_hello, name='hello'),
]

正则表达式中的 name 是一个特殊的行为,它告诉 Django 提取匹配 URL 的部分并作为参数发送给视图函数。例如,上面的示例中,say_hello() 视图会接收到名为 name 的参数。

两个示例

接下来,我将介绍两个示例,用来说明 path 路由和 re_path 路由的具体用法。

示例一:path路由

在这个示例中,我们需要做的事情是在浏览器中输入以下网址:http://127.0.0.1/hello,然后会看到 ”Hello World!“ 的输出。

在 urls.py 文件中添加如下路由:

from django.urls import path
from . import views

urlpatterns = [
    path('hello/', views.say_hello, name='hello'),
]

在 views.py 文件中添加如下视图:

from django.http import HttpResponse

def say_hello(request):
    return HttpResponse('Hello World!')

最后,在浏览器中访问 http://127.0.0.1/hello 即可看到 “Hello World!” 的输出。

示例二:re_path路由

在这个示例中,我们会动态添加一个名字参数,所以准备的 URL 将会是 http://127.0.0.1/hello/John,然后将会看到 ”Hello John!“ 的输出。

在 urls.py 文件中添加如下路由:

from django.urls import re_path
from . import views

urlpatterns = [
    re_path(r'hello/(?P<name>\w+)/', views.say_hello, name='hello'),
]

在 views.py 文件中添加如下视图:

from django.http import HttpResponse

def say_hello(request, name):
    return HttpResponse(f'Hello {name.capitalize()}!')

最后,在浏览器中访问 http://127.0.0.1/hello/John 即可看到 “Hello John!” 的输出。

这就是本篇攻略的全部内容。希望本文能够帮助你了解 Django 中路由的用法。

本文链接:http://task.lmcjl.com/news/15692.html

展开阅读全文