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 中路由的用法。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Django零基础入门之路由path和re_path详解 - Python技术站

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

相关文章

  • django-生成随机验证码

    Python生成随机验证码,需要使用PIL模块. 安装: pip3 install pillow 1   1 pip3 install pillow 基本使用 1.创建图片 from PIL import Image #导入模块 img=Image.new(mode=”RGB”,size=(120,40),color=”yellow”) f=open(“va…

    2023年4月9日
    00
  • Django之URL分发器

    URL映射: 视图写完后,要与URL进行映射(即用户在浏览器中输入什么样的url可以请求到这个视图函数),Django会从url.py文件中寻找相对应的视图,这个文件中有个urlpatterns变量,这个变量中通过path函数包含着要请求的视图。为什么会从url.py文件中寻找呢,因为在setting中有个ROOT_URLCONF = ‘gjz.urls’;…

    2023年4月9日
    00
  • Django中的Signal代码详解

    下面我会详细讲解“Django中的Signal代码详解”的完整攻略,包括两条示例说明。 什么是Signals Signal是Django框架中一种提供了统一解耦机制的工具。Signal机制可以在软件设计中完成消息的发布和订阅功能。简单来说,Signal是一种django中内部|跨应用程序的非阻塞通信方式。 优点是:1. 内部处理自由方便,不受调用方影响;2.…

    Django 2023年5月15日
    00
  • 在Python的Django框架中使用通用视图的方法

    使用通用视图是Django框架中的一种常见方式来快速生成视图。本文将详细介绍在Python的Django框架中使用通用视图的方法。 一、通用视图简介 Django框架中,每个视图都必须返回一个HttpResponse对象或一个异常。使用通用视图可以让我们使用已经定义好的视图来快速生成视图实例。 通用视图被分成以下几种类型: ListView:处理显示一个对象…

    Django 2023年5月16日
    00
  • Django中的用户身份验证示例详解

    下面我就为您详细讲解 “Django中的用户身份验证示例详解”。这篇文章主要探讨 Django web开发框架中的用户身份验证,包括两个示例,分别涉及当用户已登录和当用户未登录时的两种情况。 示例1:用户已登录 在Django中,可以使用 @login_required 装饰器来限制只有已经登录的用户才能访问某些视图函数。下面是一个示例: from djan…

    Django 2023年5月16日
    00
  • python27+django1.9添加api

    我们进入Python的交互 shell 并使用Django提供的API。要进入Python shell,使用python manage.py shell 使用这个而不是简单的输入”python”,是因为 manage.py 会帮你创建项目的环境。“创建项目环境”包括两件事: 把polls添加到sys.path里。为了灵活性,Django中的模块通过加点的路径…

    Django 2023年4月10日
    00
  • Django的ORM中表名与表中的字段名设置;

    表名设置: 在模型类的Meta设置db_table=”表名” 如: class Posts(models): posts_id=models.AutoField(primary_key=True); class Meta: db_table=”t_posts” 更多Meta属性请参照:https://docs.djangoproject.com/en/dev…

    Django 2023年4月11日
    00
  • Django-权限信息初始化

    数据库 from django.db import models class Menu(models.Model): “”” 菜单组: “”” title = models.CharField(max_length=32) def __str__(self): return self.title class Group(models.Model): “”” …

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