下午好,
我有一个简单的Django 2.2应用程序,供用户检入他们检出的设备。他们检出的用户和项目表占据页面顶部。在最底行,是一个文本/提交表单。我希望发生这种情况:
我很近。我所有的逻辑和查询都起作用,我的项目又被签回。但是,页面重新呈现,没有用户表,只是表单中还有旧数据。
views.py
class EquipmentReturn(View):
def get(self, request, *args, **kwargs):
# get checked out items for display table -this works
form = ExpressCheckInForm(request.POST)
return render(request, 'eq_return.html',
context={'master_table': master_table,
'form': form}
def post(self, request):
if request.method == 'POST'
form = ExpressCheckInForm(request.POST)
if form.is_valid():
# this checks the item back in (or not) and creates messages-works
else:
form - ExpressCheckInForm()
return render(request, 'eq_return.html', context={'form': form}
我知道有更好的方法可以做到这一点。例如,直到我在get函数中声明它,我的表单才会出现。如何使所有这些都发生在一页上?谢谢!
答案 0 :(得分:1)
我认为类似的方法可能有效。我假设这里缺少代码,例如,您获得master_table
的地方。
class EquipmentReturn(View):
def get(self, request, *args, **kwargs):
# get checked out items for display table -this works
form = ExpressCheckInForm()
return render(
request, 'eq_return.html',
context={'master_table': master_table, 'form': form},
)
def post(self, request):
form = ExpressCheckInForm(request.POST)
if form.is_valid():
# this checks the item back in (or not) and creates messages-works
# after saving the form or whatever you want, you just need to redirect back
# to your url. It will call get again and start over
return HttpResonseRedirect(reverse('your-url-name'))
return render(request, 'eq_return.html', context={'form': form})
您似乎仍处于基于函数的视图思维方式中。搜索差异以及如何理解和使用基于类的视图。