在 Python 中合并 Returns 基于函数的视图 Django

Combined Returns in Python Function Based Views Django

我目前正在使用 Django 构建一个网站,我已经到了需要在屏幕上打印数据 (ListView) 并在同一页面 (模板) 上更新 (UpdateView) 数据的地步。根据我的发现,我无法使用 Django 通用视图轻松完成此操作,因此我将我的视图重写为基于函数的视图。当前这段代码通过对 HTML.

的一些更改完美地更新了我需要的内容
def DocPostNewView(request, pk):

context = {}

obj = get_object_or_404(DocPost, id=pk)

form = GeeksForm(request.POST or None, instance=obj)

if form.is_valid():
    form.save()
    return HttpResponseRedirect("/" + id)

context["form"] = form

posts = DocPost.objects.all()

return render(request, "my_app/use_template.html", context)

... 下面这段代码完美地列出了对象,并对 HTML.

进行了一些更改
def DocPostNewView(request, pk):

context = {}

obj = get_object_or_404(DocPost, id=pk)

form = GeeksForm(request.POST or None, instance=obj)

if form.is_valid():
    form.save()
    return HttpResponseRedirect("/" + id)

context["form"] = form

posts = DocPost.objects.all()

return render(request, 'my_app/use_template.html', context={'posts': posts})

我只需要结合这些,唯一真正的区别是两个(相同)函数底部的 return 命令。我如何合并 RETURNS 以便我可以在同一页面上列出数据和更新数据???

谢谢

这对你有用吗?

def DocPostNewView(request, pk=None):
    posts = DocPost.objects.all()
    obj = get_object_or_404(DocPost, id=pk)
    form = GeeksForm(request.POST or None, instance=obj)
    if form.is_valid():
        form.save()
        return HttpResponseRedirect("/" + id)
    context = {"form":form, "posts":posts}
    return render(request, "my_app/use_template.html", context)

在您的模板中,您可以使用“posts”来列出每个 post, 您可以使用“表单”来更新特定的 post、

事情是,对于您进行的每次更新,您将始终看到 post 的整个列表,如果这是您想要实现的