带参数的url的NoReversMatch

时间:2016-12-19 07:18:03

标签: django django-views django-urls

所以我有一个简单的模型,我想显示我的食谱列表。所以在urls.py中我有以下网址:

urlpatterns = [
    url(
        regex=r'^$',
        view=views.RecipeListView.as_view(),
        name='list'
    ),
    url(
        regex=r'^(?P<name>[\w.@+-]+)/$',
        view=views.RecipeDetailView.as_view(),
        name='detail'
    ),
]

name只是食谱的名称,它可以是任何东西。而且在我的名单上,我有以下给予网址:

<div class="list-group">
    {% for recipe in recipe_list %}
      <a href="{% url 'recipes:detail' recipe.name %}" class="list-group-item">
        <h4 class="list-group-item-heading">{{ recipe.name }}</h4>
      </a>
    {% endfor %}
  </div>

所以我将名称的参数传递给详细视图,但我仍然在/ recipes /

中得到错误NoReverseMatch
  

使用参数'(u'这是我的测试配方')'和'反转'详细'   找不到关键字参数“{}”。尝试过1种模式:   [u'recipes /(P [0-9A-ZA-Z ._%+ - ] +)/ $']

我不确定我做错了什么。

1 个答案:

答案 0 :(得分:0)

您正在传递一个名为(u'This is my test recipe',)的元组,并且您将其作为位置参数传递,其中您的url方法需要一个关键字参数。

正确的方法是:

<a href="{% url 'recipes:detail' name=recipe.name[0] %}">