将slug添加到url时出现NoReverseMatch错误

时间:2014-05-07 17:54:14

标签: python django django-urls

对于Django和Python来说,这是一个新手。希望得到一些关于下面的代码出错的帮助。基本上,我正在尝试创建一个带有id和urg的网址,例如something.com/1/arts-and-crafts

在下面发现并收到NoReverseMatch错误:

反向&#39;类别&#39;有争议的&#39;(2,你&#39; arts-and-crafts&#39;)&#39;和关键字参数&#39; {}&#39;未找到。尝试了2种模式:[&#39;(?P \ d +)/ [ - \ w] + / $&#39;,&#39;(?P \ d +)/ $&#39;] < /强>

以下是我正在使用的代码,非常感谢您在理解错误时提供的任何帮助:

模板html

<ul class="list-unstyled">
          {% for category in categories %}
            {% if forloop.counter < 10 %}
              <li><a href="{% url 'category' category.id category.slug %}">
                {{ category.cat_name}}</a></li>
            {% endif %}
          {% endfor %}
        </ul>

url.py

url(r'^(?P<cat_id>\d+)/[-\w]+/$', 'guides.views.category', name='category'),

views.py

def category(request, cat_id):
    categories = Category.objects.all()
    guides = Guide.objects.filter(category__id=cat_id).order_by("created_date").reverse()
    is_featured = Guide.objects.filter(category__id=cat_id).filter(featured=True)
    selected_category = get_object_or_404(Category, pk=cat_id)
    return render(request, 'guides/category.html', {'categories': categories, 'guides': guides, 'is_featured': is_featured, 'selected_category': selected_category})

1 个答案:

答案 0 :(得分:0)

您的网址不会将slug捕获为参数,因此无法在反向调用中使用。将第二种模式更改为(?P<slug>[-\w]+)或不使用category.id标记中的{% url %}