【发布时间】:2018-11-15 15:51:02
【问题描述】:
我的问题是关于再次重定向到主题的所有条目所在的 /topics/[id_number_for_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() 或正则表达式中的返回指令
我的代码:
views.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)
urls.py
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'),
models.py
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] + "..."
edit_entry.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 %}
【问题讨论】: