Django视图遇意外关键字参数:访问/article/1/路径触发TypeError
解决Django中/article/1/路径访问的TypeError问题
我帮你排查出几个关键错误,直接对应你遇到的问题:
错误1:视图函数与URL配置不匹配
你的URL配置里把<int:article_id>/路径指向了views.articles,但实际定义的视图函数是article(少了末尾的s)!这会导致Django调用错误的视图函数,如果articles函数没有接收article_id参数,自然会抛出TypeError。
错误2:render_to_response的字典语法错误
你在传递上下文时用了双大括号{{...}},这是模板里的语法,Python代码里应该用单大括号{...}来定义字典。
错误3:URL路径缺少article/前缀
你想要的是/article/1/这样的访问路径,但当前的URL规则是<int:article_id>/,这只会匹配/1/,不会带上article前缀。
额外优化:使用更现代的render函数
render_to_response在Django 3.0+已被标记为过时,推荐用render函数,它会自动处理request上下文,避免潜在的上下文缺失问题。
修正后的views.py:
from django.shortcuts import render from .models import Articles # 确保导入了你的文章模型 def article(request, article_id): # 可选:用get_object_or_404替代get,避免文章不存在时抛出服务器错误 # from django.shortcuts import get_object_or_404 # article = get_object_or_404(Articles, id=article_id) article = Articles.objects.get(id=article_id) return render(request, 'article.html', {'article': article})
修正后的urls.py:
from django.urls import path from . import views urlpatterns = [ path('showall/', views.articles, name='articles'), # 修正了视图函数指向,同时添加article前缀 path('article/<int:article_id>/', views.article, name='article'), ]
内容的提问来源于stack exchange,提问作者M.B
相关产品推荐
相关产品推荐

