Django视图获得意外的关键字参数

时间:2018-04-09 07:57:59

标签: python django

我尝试从我的数据库中获取id并制作类似/article/1/的内容。 1是我文章的内容,但它没有用。

views.py

def article(request, article_id):
    return render_to_response('article.html', {{'article': Articles.objects.get(id=article_id)}})

my urls.py

from django.urls import path, re_path

from . import views

urlpatterns = [
    path('showall/', views.articles, name='articles'),
    path('<int:article_id>/', views.articles, name='article'),

]

我收到错误:

TypeError at /article/1/ articles() got an unexpected keyword argument 'article_id'

我还包括我的数据库图像

Datebase

3 个答案:

答案 0 :(得分:2)

看起来您正在使用views.articles作为文章详情视图:

path('<int:article_id>/', views.articles, name='article'),

您应该使用views.article代替:

path('<int:article_id>/', views.article, name='article'),

请注意,您可以对article视图进行一些改进/修复:

  • 使用get_object_or_404,以便在数据库中不存在该文章时不会收到服务器错误
  • 使用render代替过时的render_to_response
  • 上下文字典应该是字典{...}。您目前有双花括号{{...}}

将它们放在一起得到:

from django.shortcuts import get_object_or_404, render

def article(request, article_id):
    article = get_object_or_404(Article, id=article_id)
    return render(request, 'article.html', {'article': article})

答案 1 :(得分:0)

views.py使用article(注意复数)功能时,urls.py定义了articles功能。这是一个拼写错误,还是articles中有 支持可选views.py参数的article_id函数?

答案 2 :(得分:0)

您正在 article / id / 网址中使用views.articles,这很可能是您用于 article / showAll / 网址的。请改用:

path('<int:article_id>/', views.article, name='article')