如何显示URL对应的标题而非URL地址?附Django路由配置
在Django中显示URL对应标题而非原始URL的方法
1. 先让视图传递对应模型对象到模板
首先得确保你的视图能从数据库里拿到对应ID的模型实例,这样模板才能获取到标题信息。举个例子:
详情页(details)视图改造
from django.shortcuts import get_object_or_404, render from .models import Service # 这里替换成你实际的模型类 def details(request, services_id): # 根据ID获取服务对象,不存在则返回404页面 service = get_object_or_404(Service, id=services_id) # 把对象传给模板 return render(request, 'details.html', {'service': service})
项目页(program)视图同理处理
from .models import Program # 替换成你实际的项目模型类 def program(request, prgmm_id): program = get_object_or_404(Program, id=prgmm_id) return render(request, 'program.html', {'program': program})
2. 在模板里展示标题而非URL
场景1:显示当前页面的标题
比如在details.html中,要展示当前服务的标题,直接调用模型的标题字段就行:
<h1>{{ service.title }}</h1>
(如果你的模型标题字段不是title,换成你实际的字段名,比如name)
场景2:生成带标题的跳转链接
如果是在首页或列表页做跳转链接,用Django的url模板标签生成URL,同时把模型标题作为链接文本:
<!-- 假设首页模板里有一个服务列表services_list --> <ul> {% for service in services_list %} <li> <a href="{% url 'details' service.id %}">{{ service.title }}</a> </li> {% endfor %} </ul>
项目页的链接写法类似:
<a href="{% url 'program' program.id %}">{{ program.name }}</a>
3. 额外需求:在视图中获取标题用于页面元信息
如果要把标题设置成HTML页面的<title>标签内容,可以在视图里先提取标题再传给模板:
def details(request, services_id): service = get_object_or_404(Service, id=services_id) page_title = service.title return render(request, 'details.html', {'service': service, 'page_title': page_title})
然后在模板的<head>里使用:
<title>{{ page_title }}</title>
小提示
- 一定要确保你的模型(比如
Service、Program)有存储标题的字段,没有的话需要先给模型加字段并迁移数据库。 - 用
get_object_or_404比直接用Model.objects.get()更友好,能避免ID不存在时抛出服务器错误。
内容的提问来源于stack exchange,提问作者thanveer _______
相关产品推荐
相关产品推荐

