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

yizhihongxing

我将详细讲解“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技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • django drf框架自带的路由及最简化的视图

    针对该话题,我介绍一下关于Django DRF框架自带的路由和最简化的视图的完整攻略。 一、Django DRF框架自带的路由 在Django DRF框架中,提供了多种路由匹配方法,其中最常用的是DRF自带的路由匹配器。 首先,需要导入include和default-router两个路由相关的模块: from django.urls import path,…

    Django 2023年5月16日
    00
  • [Django]用户权限学习系列之Permission权限基本操作指令

    若需建立py文件进行测试,则在文件开始加入以下代码即可 #coding:utf-8 import os os.environ.setdefault(“DJANGO_SETTINGS_MODULE”, “www.settings”) ”’ Django 版本大于等于1.7的时候,需要加上下面两句 import django django.setup() 否则…

    Django 2023年4月10日
    00
  • django 中使用request请求失败,requests.exceptions.ConnectionError: HTTPConnectionPool(host=’xxx’, port=80):

    记录下今天遇到的问题: 本地在使用request请求接口的时候,没有问题 但是代码部署在服务器上之后,请求失败,错误:requests.exceptions.ConnectionError: HTTPConnectionPool(host=’xxxxx’, port=80): Max retries exceeded with url: /backend-a…

    Django 2023年4月10日
    00
  • django中itsdangerous的用法

     itsdangerous用来解决什么问题,为什么需要用到itsdangerous? 安装命令:pip install itsdangerous 有时候你想向不可信的环境发送一些数据,但如何安全完成这个任务呢?解决的方法就是签名。使用只有你自己知道的密钥,来加密签名你的数据,并把加密后的数据发给别人。当你取回数据时,你就可以确保没人篡改过这份数据。 诚然,接…

    Django 2023年4月10日
    00
  • [django]django配合前端vue前后端联调,django服务端解决跨域(django-cors-headers)

    https://www.cnblogs.com/iiiiiher/articles/9164940.html 前端写了个页面,里面$.post发现403错误. 需要注释下 前后端联调的跨域问题 前端可能是127.0.0.1:3000 后端127.0.0.1:8080导致前端不能正常访问 https://github.com/ottoyiu/django-co…

    Django 2023年4月10日
    00
  • django之urls系统

    Django的urls系统简介 Django 1.11版本 URLConf官方文档 URL配置(URLconf)就像Django 所支撑网站的目录。它的本质是URL与要为该URL调用的视图函数之间的映射表。 你就是以这种方式告诉Django,对于这个URL调用这段代码,对于那个URL调用那段代码。 URLconf配置 基本格式: from django.co…

    Django 2023年4月9日
    00
  • Apache ab并发负载压力测试(python+django+mysql+apache)

    如标题,大家都知道秒杀中存在高并发使库存骤然为0,但在我们个人PC或小区域内是模拟不出这样的情景 现在利用 Apache ab并发负载压力测试  1,数据库建入库存字段并映射模型 2,view编写脚本 #秒杀压力测试 def miaosha(request): res_one = Newss.objects.get(pk=1) if res_one.pd &…

    Django 2023年4月13日
    00
  • Django 前后台的数据传递

    Django 从后台往前台传递数据时有多种方法可以实现。 最简单的后台是这样的: from django.shortcuts import render def main_page(request): return render(request, ‘index.html’) 这个就是返回index.html的内容,但是如果要带一些数据一起传给前台的话,该怎么…

    Django 2023年4月10日
    00
合作推广
合作推广
分享本页
返回顶部