如何在Django函数视图中解析URL中的ID参数
解决Django函数视图获取URL中ID的问题
要从URL /display_listing/1 里提取ID并使用,需要分两步修改配置和视图:
1. 修改URL配置(urls.py)
首先在项目或应用的urls.py里,把URL路径改成带参数捕获的形式,用Django的路径转换器<int:listing_id>匹配整数ID:
from django.urls import path from . import views urlpatterns = [ # 其他URL配置... path('display_listing/<int:listing_id>/', views.display_listing, name='display_listing'), ]
这里<int:listing_id>的作用是:匹配URL中的整数部分,将其命名为listing_id,并自动传递给对应的视图函数。
2. 修改函数视图
更新视图函数,让它接收listing_id参数,之后就能直接用这个变量做数据库查询:
from django.shortcuts import render, get_object_or_404 from .models import Listing # 替换成你实际的模型名称 def display_listing(request, listing_id): # 用get_object_or_404处理ID不存在的情况,会自动返回404页面 listing = get_object_or_404(Listing, id=listing_id) # 将获取到的数据库条目和ID传递给模板 return render(request, 'auctions/test.html', {"listing": listing, "id": listing_id})
补充说明
直接从request对象里解析URL不是Django的规范做法,路由系统已经帮你封装好了参数捕获的逻辑,按照上面的步骤实现是最简洁、最符合框架设计的方式。
内容的提问来源于stack exchange,提问作者Aco
相关产品推荐
相关产品推荐

