python - 在 Django 视图中显示表格和表单
问题描述
我试图在同一个视图中返回一个表单和表格,以便它们出现在同一个屏幕上。
我知道下面的代码不起作用,它是为了说明我想要做什么 - 我有我的CreateManifestForm
并且manifests = Manifests.objects.all()
应该填充模板中存在的表格。问题是当我渲染它时 - 它显示了表单,并且只是空白表。我已经使用单独的视图填充了表格,因此我知道它已自行正确设置,但如何同时{'form': form}
渲染context
?
视图.py:
def add_manifest(request):
manifests = Manifests.objects.all()
context = {
'manifests' : manifests,
}
if request.method == "POST":
form = CreateManifestForm(request.POST)
if form.is_valid():
form.save()
return redirect('display_orders')
else:
form = CreateManifestForm()
return render(request, 'add_manifest.html', {'form': form})
return render(request, 'add_manifest.html', context)
解决方案
您只需要在上下文中返回您需要的所有内容。你有 2 个回报,所以第二个永远不会发生。
你需要这样做;
def add_manifest(request):
if request.method == "POST":
form = CreateManifestForm(request.POST)
if form.is_valid():
form.save()
return redirect('display_orders')
# Leave this down here so that you don't hit
# the database for manifests on a POST when
# the form is valid, because that returns above
form = CreateManifestForm()
manifests = Manifests.objects.all()
context = {
'form': form,
'manifests': manifests,
}
return render(request, 'add_manifest.html', context)
推荐阅读
- smooch - Smooch - 是否可以向用户的电子邮件发送回复
- java - 如何从露天站点获取所有站点提要?
- java - changing getMap to GetMapAsync
- angular - What is the proper way to return from within an angular subscription?
- java - Can I force my Android app to update from the Play Store?
- java - 我的回收器视图适配器返回 null
- uiaccessibility - 手风琴模式和披露模式有什么区别?
- c# - 控制台项目的 Visual Studio 2017 中出现 C# 错误,并且找不到调试选项
- python-3.x - 如何改进我的回合制游戏循环代码
- docker - NGINX proxy_pass 到 RabbitMQ 管理器只能通过移动设备工作