Django无法跳转至首页:模板标签未解析引发404错误求助
Django链接跳转404问题解决
你这段代码的问题在于,视图函数中直接返回的HttpResponse内容里的模板标签{% url 'home' %}不会被Django的模板引擎解析,它会被当作普通字符串输出,所以点击链接后浏览器会请求编码后的错误路径http://127.0.0.1:8000/search/%7B%25%20url%20''%20%25%7D,这显然不是正确的首页路径,因此触发404错误。同时注意视图参数应该是request而非requests,这个小细节也需要修正。
方案一:在视图中使用reverse生成URL
Django提供了reverse函数,可以通过URL名称反向解析出对应的URL路径,修改代码如下:
from django.http import HttpResponse from django.urls import reverse def search(request): home_url = reverse('home') return HttpResponse(f"<a href='{home_url}'>home</a>")
方案二:使用Django模板(更推荐)
直接在视图里拼接HTML不是最佳实践,更好的方式是借助模板文件实现:
- 在你的app目录下创建
templates文件夹,新建search.html文件,内容如下:
<a href="{% url 'home' %}">home</a>
- 修改视图函数:
from django.shortcuts import render def search(request): return render(request, 'search.html')
这种方式下,模板里的{% url 'home' %}会被模板引擎正确解析成首页的URL。
内容的提问来源于stack exchange,提问作者Mahim Tiwari
相关产品推荐
相关产品推荐

