Python NoReverseMatch:与#x27相反;主题';带参数';(3)及"x27 ;;没有找到。尝试了1种模式:[';主题/$';]
我的问题是关于再次重定向到/topics/[id\u number\u for\u topic]页面,该页面中所有主题条目都位于该页面。当我在/edit_entry/[id_number_for_entry]中结束条目编辑并单击按钮时,出现如下错误: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
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)))
很好,请更正:)