更新博客的按钮 post
Button for update a blog post
我无法正确创建基于 Bootstrap 4.3 的按钮来激活 post 的更新。
我创建了这个 view:
def updatePost(request, slug_post=None):
update_post = get_object_or_404(BlogPost, slug_post=slug_post)
form = BlogPostForm(request.POST or None, request.FILES or None, instance=update_post)
if form.is_valid():
update_post = form.save(commit=False)
update_post.slug_post = slugify(update_post.title)
update_post.save()
return redirect('post_list')
context = {
'form': form,
}
template = 'blog/editing/create_post.html'
return render(request, template, context)
和这个路径:
path("blog/<str:slug_post>/update/", views.updatePost, name='update_post'),
但是当我使用这个按钮时:
<a class="btn btn-primary btn-lg mt-2" href="{% url 'update_post' %}">Update</a>
我看到这条错误消息:
Reverse for 'update_post' with no arguments not found. 1 pattern(s)
tried: ['blog/(?P[^/]+)/update/$']
奇怪的是,如果我将 link 写入地址栏,我就可以更新我的 post。例如:我将此 link 转换为 post:/blog/title-slug-post/
。如果我数字 /blog/title-slug-post/update/
我可以更新 post.
我错了什么?
您需要在 url 模板标签中包含 slug_post
参数。现在它不知道你想要什么 slug 并引发错误。
{% url 'update_post' slug_post='title-slug-post' %}
如果您在上下文中传递 BlogPost 对象,您也可以这样设置格式。
{% url 'update_post' slug_post=blog_post.slug_post %}
我无法正确创建基于 Bootstrap 4.3 的按钮来激活 post 的更新。 我创建了这个 view:
def updatePost(request, slug_post=None):
update_post = get_object_or_404(BlogPost, slug_post=slug_post)
form = BlogPostForm(request.POST or None, request.FILES or None, instance=update_post)
if form.is_valid():
update_post = form.save(commit=False)
update_post.slug_post = slugify(update_post.title)
update_post.save()
return redirect('post_list')
context = {
'form': form,
}
template = 'blog/editing/create_post.html'
return render(request, template, context)
和这个路径:
path("blog/<str:slug_post>/update/", views.updatePost, name='update_post'),
但是当我使用这个按钮时:
<a class="btn btn-primary btn-lg mt-2" href="{% url 'update_post' %}">Update</a>
我看到这条错误消息:
Reverse for 'update_post' with no arguments not found. 1 pattern(s) tried: ['blog/(?P[^/]+)/update/$']
奇怪的是,如果我将 link 写入地址栏,我就可以更新我的 post。例如:我将此 link 转换为 post:/blog/title-slug-post/
。如果我数字 /blog/title-slug-post/update/
我可以更新 post.
我错了什么?
您需要在 url 模板标签中包含 slug_post
参数。现在它不知道你想要什么 slug 并引发错误。
{% url 'update_post' slug_post='title-slug-post' %}
如果您在上下文中传递 BlogPost 对象,您也可以这样设置格式。
{% url 'update_post' slug_post=blog_post.slug_post %}