我将详细讲解“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 中路由的用法。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Django零基础入门之路由path和re_path详解 - Python技术站