将多个ID传递给url Django

时间:2018-08-26 18:00:59

标签: python html django

嗨,我正在尝试将用户发送回html文件,但是当我在视图函数中使用以下代码时:

def delete_topic(request, topic_id):
    """ Delete Topic """
    topic = Topic.objects.get(id=topic_id)
    topic.delete()
    return HttpResponseRedirect(reverse('blogging_logs:topics'))

它给了我一个NoReverseMatch错误,我似乎不知道为什么。我注意到我的主题视图功能需要category_id,但是我不确定如何传递多个ID。

enter image description here

这是我的主题视图

def topics(request, category_id):
    """Show all topics for a single category"""
    category = Category.objects.get(id=category_id)  # get category that was requested
    topics = category.topic_set.all()  # get all topics associated with category that was requested
    context = {'category': category, 'topics': topics}
    return render(request, 'blogging_logs/category.html', context)

这是正在使用delete_topics def的html页面。 topic.html

{% block content %}
<h3>{{ topic }}</h3>
  {% for entry in entries %}
      <p>{{ entry.text|linebreaks }}</p>
    {% empty %}
      <li>No entry entered yet!</li>
    {% endfor %}

    <a href="{% url 'blogging_logs:entry' topic.id %}"> Add entry </a>
    <a href="{% url 'blogging_logs:delete_topic' topic.id %}">Delete Topic</a>
{% endblock content %}

我试图在topic.html中的URL( delete_topic )中添加第二个ID( category.id ),但这给了我一个错误。我假设我的错误是它没有获得将用户送回主题页面所需的类别ID。

1 个答案:

答案 0 :(得分:2)

首先,您不需要多个ID,只需要类别ID。

第二,您需要将其添加到Python代码而不是模板中:

 return HttpResponseRedirect(reverse('blogging_logs:topics', args=(topic.category_id)))