Django页面跳转异常:点击文本1无响应/无法跳转至文章页
解决Django页面跳转无响应的问题
我来帮你排查下点击文章入口没反应的问题,主要有三个核心问题需要修正:
1. HTML链接缺失跳转目标
你的HTML里的<a>标签只是渲染了文章内容,但完全没设置跳转的href属性,点击自然不会有任何响应。得用Django的模板标签生成正确的路由链接:
修改后的HTML片段(建议用文章标题作为跳转入口,更符合用户习惯):
<div> <a href="{% url 'blog_article' article.id %}">{{ article.title }}</a> </div>
如果你确实需要用article.body的内容作为跳转触发点,直接把article.title替换成article.body即可,但长文本全可点的体验不太友好哦
2. URL正则表达式存在两处错误
你的路由配置有两个致命问题,会导致即使链接正确,后端也匹配不到对应的视图:
- 第一个路由
r'$'没有开头的^,会错误匹配所有以空字符串结尾的URL,应该改成r'^$'精准匹配根路径; - 第二个路由的
\d只能匹配单个数字的文章ID(比如ID=1可以,但ID=10就匹配失败),要改成\d+支持多位数字ID,同时加上开头的^避免和其他路由冲突。
修改后的urls配置:
from django.conf.urls import url from . import views urlpatterns = [ url(r'^$', views.blog_title, name='blog_title'), url(r'^(?P<article_id>\d+)/$', views.blog_article, name='blog_article'), ]
3. 视图函数添加异常处理(可选但推荐)
如果用户访问了一个不存在的文章ID,models.BlogArticle.objects.get(id=article_id)会直接抛出DoesNotExist异常导致500错误,建议用Django内置的get_object_or_404返回友好的404页面:
修改后的views代码:
from django.shortcuts import get_object_or_404 def blog_article(request, article_id): article = get_object_or_404(models.BlogArticle, id=article_id) return render(request, 'blog/article.html', {'article': article})
把这三处改完后,点击文章链接应该就能正常跳转到对应的文章页了。
内容的提问来源于stack exchange,提问作者J.wang
相关产品推荐
相关产品推荐

