django2笔记之路由path语法的实现

下面是详细讲解“django2笔记之路由path语法的实现”的完整攻略:

1. 路由path语法概述

在Django中,路由用于匹配URL,并将请求分发到对应的视图函数。而路由的定义则是通过一个Python模块来完成的,这个模块通常被称作“路由表”。

在Django 2开始,我们使用path()函数定义路由而不是url()函数。和旧版本的url()函数相比,path()函数的语法更加简洁易懂。

例如,要实现一个可以匹配/blog/文章标题/这样的路径的路由,我们可以按照以下方式定义路由:

from django.urls import path
from . import views

urlpatterns = [
    path('blog/<str:title>/', views.blog_detail, name='blog_detail')
]

在以上定义中,path()函数的第一个参数是路由的字符串表达式,其中包含了<str:title>这样的占位符。这个占位符会匹配一个包含任意字符的字符串,并把这个字符串传递给应该执行的视图函数。这个占位符的内容必须被定义为Python中的字符串类型,即str类型。

2. 路由path语法示例

下面我们来看两个使用路由path语法的示例。

示例1:匹配整数类型的参数

假设我们有一个博客网站,需要按照文章的ID来访问特定的文章,我们可以定义如下路由:

from django.urls import path
from . import views

urlpatterns = [
    path('blog/<int:id>/', views.blog_detail, name='blog_detail')
]

在这个路由中,<int:id>这个占位符匹配整数类型的参数,并将参数传递给视图函数。id是这个占位符的名称,在对应的视图函数中,我们可以通过这个名称来获取传递过来的参数。例如,下面是一个对应的视图函数:

def blog_detail(request, id):
    blog = Blog.objects.get(id=id)
    return render(request, 'blog_detail.html', {'blog': blog})

在这个视图函数中,我们使用Blog.objects.get()方法根据传递过来的ID从数据库中获取相应的博客,并将它传递给模板中进行渲染。

示例2:匹配路径中的字符

假设我们有一个可以查看用户上传照片的网站,我们需要按照用户的ID和照片的名称来访问特定的照片,我们可以定义如下路由:

from django.urls import path
from . import views

urlpatterns = [
    path('user/<int:user_id>/photos/<str:photo_name>/', views.photo_detail, name='photo_detail')
]

在这个路由中,<int:user_id><str:photo_name>这两个占位符分别匹配用户ID和照片名称,并将它们传递给视图函数。在对应的视图函数中,我们可以通过这两个名称来分别获取用户ID和照片名称,并使用它们来获取数据库中相应的照片,例如:

def photo_detail(request, user_id, photo_name):
    photo = Photo.objects.get(user__id=user_id, name=photo_name)
    return render(request, 'photo_detail.html', {'photo': photo})

在这个视图函数中,我们使用Photo.objects.get()方法根据用户ID和照片名称获取相应的照片,并将它传递给模板中进行渲染。

总结

通过以上两个示例,我们可以清楚地看到路由path语法的实现方式,包括占位符的使用和视图函数中获取参数的方式。在实际应用中,我们可以根据需要定义不同的路由规则,以便更好地结合视图函数处理用户请求。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:django2笔记之路由path语法的实现 - Python技术站

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

相关文章

  • 初学者用pycharm创建一个django项目和一个app时需要注意的事项

      1.在pycharm中点击File,选择new project,点击djiango,在右面的Location中将untitile改为你的项目名,其余部分注意见下图:   2.在终端中输入命令:django-admin startproject 项目名 如何创建一个app:   (1)在django项目目录下面打开终端,输入:python manage.p…

    Django 2023年4月11日
    00
  • django的聚合函数和aggregate、annotate方法使用详解

    标题:Django的聚合函数和aggregate、annotate方法使用详解 在Django的ORM中,聚合函数和aggregate、annotate方法是用来对查询的结果进行统计和分析的常用方法。下面详细介绍聚合函数和这两个方法的使用方法,并提供两个示例说明。 一、聚合函数 聚合函数是用来对查询结果进行统计分析的函数。常用的聚合函数有:Count(), …

    Django 2023年5月16日
    00
  • DRF(Django REST Framework)框架

    目录 一.DRF中的Request 二.前戏: 关于面向对象的继承 三.初级版本 1. settings.py文件 — 注册app 2. models.py文件 — 创建表 3. admin.py文件 4. 根目录下urls.py — 路由匹配 5. bms/views.py — 视图函数 6. bms/modelserializers.py — …

    Django 2023年4月10日
    00
  • Django之静态文件配置

    对于前端已经写好了的文件 我们只是拿过来使用 那么这些文件都可以称之为叫”静态文件”html文件默认全都放在templates文件夹下 静态文件可以是 bootstrap一类的前段框架 已经写好了的 图片 css js   静态文件默认全都放在static文件夹下 static文件夹中默认会默认创建的子文件夹 css文件夹 当前网站所有的样式文件 js文件 …

    Django 2023年4月11日
    00
  • Django Form基于Model定义表单

    Django Form是一个用来处理表单的工具,它可以帮助我们方便地验证表单数据、生成表单HTML代码等。而使用基于Model的Form可以让我们更方便地定义表单结构,快速生成表单代码,并且能够自动处理表单和数据库中Model的交互。 下面是基于Model定义表单的完整攻略: 定义Model 首先,我们需要先定义一个Model类,例如: from djang…

    Django 2023年3月12日
    00
  • 学点简单的Django之第一个Django程序的实现

    下面我会给出学习Django的第一个程序实现的完整攻略,并配以两条示例说明: 第一步:安装并创建Django项目 安装Django:在命令行中输入指令:pip install django; 创建Django项目:在命令行中输入指令:django-admin startproject mysite。 执行完以上两个步骤后,你就已经成功创建了一个Django项…

    Django 2023年5月16日
    00
  • Django-ORM之ForeignKey的使用-多对一关系

    ForeignKey使用俩表示两张表多对一关系的外键,外键字段要定义在多属性的表中。 定义外键时,to的表可以直接写类名,但是需要注意类的定义顺序;也可以写字符串式的类名,这样就可以忽略class类的定义顺序; class Book(models.Model): title = models.CharField(max_length=32) pid = mo…

    Django 2023年4月10日
    00
  • django框架创建app及使用、

     App 创建一个app : python manage.py startapp app01 admin: from django.contrib import admin# Register your models here. apps: from django.apps import AppConfigclass App01Config(AppConfi…

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