Python NoReverseMatch:与#x27相反;主题';带参数';(3)及"x27 ;;没有找到。尝试了1种模式:[';主题/$';]

Python NoReverseMatch:与#x27相反;主题';带参数';(3)及"x27 ;;没有找到。尝试了1种模式:[';主题/$';],python,django,Python,Django,我的问题是关于再次重定向到/topics/[id\u number\u for\u topic]页面,该页面中所有主题条目都位于该页面。当我在/edit_entry/[id_number_for_entry]中结束条目编辑并单击按钮时,出现如下错误: Reverse for 'topics' with arguments '(3,)' not found. 1 pattern(s) tried: ['topics/$'] 这个数字3表示一个主题id 我想问题在于views.py>edit_en

我的问题是关于再次重定向到/topics/[id\u number\u for\u topic]页面,该页面中所有主题条目都位于该页面。当我在/edit_entry/[id_number_for_entry]中结束条目编辑并单击按钮时,出现如下错误:

Reverse for 'topics' with arguments '(3,)' not found. 1 pattern(s) tried: ['topics/$']
这个数字3表示一个主题id

我想问题在于views.py>edit_entry()或regex表达式中的返回指令

我的代码:

视图.py

def edit_entry(request, entry_id):
    """Edycja wpisu"""
    entry = Entry.objects.get(id=entry_id)
    topic = entry.topic
    if request.method != 'POST':
        form = EntryForm(instance=entry)
    else:
        form = EntryForm(instance=entry, data=request.POST)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect(reverse('learning_logs:topics',
                                                args=[topic.id]))
    context = {'entry': entry, 'topic': topic, 'form': form}
    return render(request, 'edit_entry.html', context)
url(r'^topics/(?P<topic_id>\d+)/$', views.topic, name='topic'),
url(r'^edit_entry/(?P<entry_id>\d+)/$', views.edit_entry, name='edit_entry'),
class Topic(models.Model):
    """Temat poznawany przez usera"""
    text = models.CharField(max_length=200)
    date_added = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        """Zwraca reprezentacje modelu w postaci ciagu text."""
        return self.text


class Entry(models.Model):
    """Konkret informacje o postepie w nauce"""
    topic = models.ForeignKey(Topic)
    text = models.TextField()
    date_added = models.DateTimeField(auto_now_add=True)

    class Meta:
        verbose_name_plural = 'entries'

        def __str__(self):
            return self.text[:50] + "..."
url.py

def edit_entry(request, entry_id):
    """Edycja wpisu"""
    entry = Entry.objects.get(id=entry_id)
    topic = entry.topic
    if request.method != 'POST':
        form = EntryForm(instance=entry)
    else:
        form = EntryForm(instance=entry, data=request.POST)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect(reverse('learning_logs:topics',
                                                args=[topic.id]))
    context = {'entry': entry, 'topic': topic, 'form': form}
    return render(request, 'edit_entry.html', context)
url(r'^topics/(?P<topic_id>\d+)/$', views.topic, name='topic'),
url(r'^edit_entry/(?P<entry_id>\d+)/$', views.edit_entry, name='edit_entry'),
class Topic(models.Model):
    """Temat poznawany przez usera"""
    text = models.CharField(max_length=200)
    date_added = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        """Zwraca reprezentacje modelu w postaci ciagu text."""
        return self.text


class Entry(models.Model):
    """Konkret informacje o postepie w nauce"""
    topic = models.ForeignKey(Topic)
    text = models.TextField()
    date_added = models.DateTimeField(auto_now_add=True)

    class Meta:
        verbose_name_plural = 'entries'

        def __str__(self):
            return self.text[:50] + "..."
编辑条目.html

{% block content %}
<p><a href="{% url 'learning_logs:topic' topic.id %}">{{ topic }}</a></p>
<h3>Edycja wpisu:</h3>
<form action="{% url 'learning_logs:edit_entry' entry.id %}" method='post'>
    {% csrf_token %}
    {{ form.as_p }}
    <button name="submit">Zapisz zmiany</button>
</form>
{% endblock content %}
{%block content%}

Edycja wpisu: {%csrf_令牌%} {{form.as_p}} 扎皮兹米亚尼 {%endblock内容%}
此代码中有一个输入错误。在这里:

 return HttpResponseRedirect(reverse('learning_logs:topics',
                                            args=[topic.id]))
应该是:

return HttpResponseRedirect(reverse('learning_logs:topic',
                                            args=[topic.id]))

我建议您使用
django
中的
reverse

from django.urls import reverse
...
return HttpResponseRedirect(reverse('learning_logs:topics', kwargs=dict(topic_id=topic.id)))
很好,请更正:)