如何在django中将编辑页面链接到我的详细信息页面?
问题描述:
所以我要连结的模板,我可以编辑帖子是这样的:如何在django中将编辑页面链接到我的详细信息页面?
<a href="{% url 'blog:post_update' pk=post.pk %}">Edit</a>
不过是给我这个错误:
Reverse for 'eintrag_update' with arguments '()' and keyword arguments '{u'pk': 63L}' not found. 1 pattern(s) tried: [u'gaestebuch/(?P<id>[0-9]+)/edit/$']
但我可以接触到这样的模板没有一个错误:/博客/(ID)/编辑
此模板每隔链接工作,比如我有一个链接就在旁边像这样:
<a href="{% url 'blog:delete_post' pk=post.pk %}">Delete</a>
这工作得很好。
这是我的看法:
def post_update(request, id=None):
instance = get_object_or_404(Post, id=id)
form = PostForm(request.POST or None, request.FILES or None, instance = instance)
if form.is_valid():
instance = form.save(commit=False)
instance.save()
return HttpResponseRedirect(instance.get_absolute_url())
context = {
"title": instance.title,
"instance": instance,
"form":form,
}
return render(request, "blog/write.html", context)
这是我的网址:
url(r'^(?P<id>[0-9]+)/edit/$', views.post_update, name='post_update'),
这是我的模型:
class Post(models.Model):
author = models.ForeignKey(settings.AUTH_USER_MODEL, default=1)
title = models.CharField(max_length=200)
content = models.TextField()
我会很高兴,如果有人可以帮助我!
答
url模式中的关键字参数必须与url标记中的关键字参数匹配。
您正在使用关键字参数pk
<a href="{% url 'blog:post_update' pk=post.pk %}">Edit</a>
所以,你应该用你的URL模式pk
为好。目前您正在使用id
。
url(r'^(?P<pk>[0-9]+)/edit/$', views.post_update, name='post_update'),
这意味着你可能需要更新您的视图,以及,例如:
def post_update(request, pk):
post = get_object_or_404(Post, pk=pk)
...
,因为它们是你可以离开视图和URL模式,并更改网址标签使用id
代替。不过,我建议使用pk
,因为这是Django在基于类的视图中使用的。
另一种选择是在url标记中使用args而不是kwargs。
{% url 'blog:post_update' post.pk %}
+0
非常感谢,再次为您提供帮助! – Dannad
将'eintrag'翻译成'post'的危险是你可能会隐藏错误!在这种情况下,我想我已经发现了这个问题。 – Alasdair
是的,我试图让它更容易理解。并且非常感谢您的帮助! – Dannad