django中出现意外的关键字参数

时间:2015-10-12 02:03:46

标签: python django

我正在尝试渲染电影的网址,点击其他众多电影。网址应采用格式 网址/电影名称。但是,我收到此错误

movie_detail() got an unexpected keyword argument 'movie_name'

请帮助我......正如你所看到的,我对Django很新。

查看代码:

def movie_detail(request, movie_name):
    movieneed = movies.objects.get(title = movie_name)
    movieneed = movieneed.replace("_", " ")
    return render(request, 'app/movie.html', {'movie':movieneed})

模板代码:

{% for movie in movies %}
    <li data-id="{{ movie.id }}"><span class="title">
    <a href="{% url "movie" movie_name=movie.movie_name %}">


    {{ movie.title }}</a></span> ({{ movie.year }}) - {{ movie.genre}}<a class="delete">X</a></li>

{% endfor %}

网址代码:

url(r'^(?P<movie_name>)/$', views.movie_detail, name='movie'),

3 个答案:

答案 0 :(得分:0)

我认为问题出在url正则表达式上。阅读此doc,可能会有帮助。

url(r'^(?P<movie_name>)/$', views.movie_detail, name='movie'),

要:

url(r'^(?P<movie_name>[\w-]+)/$', views.movie_detail, name='movie'),
  

命名组¶

     

上面的例子使用了简单的,未命名的正则表达式组   (通过括号)捕获URL的位并将其作为传递   视图的位置参数。在更高级的用法中,它是可能的   使用命名的正则表达式组来捕获URL位并传递   它们作为视图的关键字参数。

     

在Python正则表达式中,命名为regular-expression的语法   groups是(?Ppattern),其中name是组的名称和   模式是一种匹配的模式。

答案 1 :(得分:0)

您可能想要更改slug field网址中的电影名称,slugs是将任意字符串转换为有效网址字符串的特别适合的字段

至于你的问题,你的网址没有得到正确匹配,试试这个:

url(r'^(?P<movie_name>[-\w]+)/$', views.movie_detail, name='movie'),

答案 2 :(得分:0)

通常情况下,该异常意味着您的movie_name函数中没有movie_detail参数,但显然您可以这样做。

我不是肯定的,但我认为问题可能是你实际上没有任何东西要匹配。例如,假设您只允许带有字母,数字和连字符的电影标题(没有标点符号,空格等),那么您需要使用这样的正则表达式:

url(r'^(?P<movie_name>[-\w]+)/$', views.movie_detail, name='movie')