如何在Django视图中以UUID为URL slug正确跳转至新模板
问题原因
你在URL路由中配置了<uuid:poller_id>路径参数,Django会自动将匹配到的uuid值以poller_id为关键字参数传递给绑定的视图函数,但你当前的single_poller视图仅接收request一个入参,参数不匹配就触发了该报错。
解决步骤
- 首先修改视图函数的参数列表,新增
poller_id参数接收路由传递的值。如果你需要在模板中展示对应Poller条目内容,还可以补充查询逻辑将数据传递到模板:
# 先导入你的Pollers模型和快捷方法 from .models import Pollers from django.shortcuts import get_object_or_404 def single_poller(request, poller_id): # 查询对应poller对象,不存在时自动返回404 poller = get_object_or_404(Pollers, poller_id=poller_id) # 将对象传递给模板,即可在single_poller.html里用{{ poller.xxx }}渲染对应内容 return render(request, 'pollboard/single_poller.html', {'poller': poller})
- (可选优化)调整路由路径末尾加斜杠,符合Django默认路径规范,避免不必要的重定向:
path('poller/<uuid:poller_id>/', single_poller, name='single_poller'),
- (可选优化)模板中的跳转链接不要硬写路径,改用Django内置的url模板标签,后续修改路由路径时无需同步修改模板代码:
<a class="hidden_poller_id" href="{% url 'single_poller' poller_id=poller.poller_id %}">
内容的提问来源于stack exchange,提问作者JSRB
相关产品推荐
相关产品推荐

