我是django的新手,我希望将一个视图中的复选框值POST到另一个视图。
这是片段:
当我检查表格行中的两个复选框时,我只有一个值(来自Django调试窗口):
Variable Value
csrfmiddlewaretoken u'6i8aRyhvTq29EOy6sfffzPtKy9jXUsVi'
Login u'jhgjghj'
但是帖子对象应该是:
Variable Value
csrfmiddlewaretoken u'6i8aRyhvTq29EOy6sfffzPtKy9jXUsVi'
Login u'jhgjghj'
Login u'sdfsfd' (the second object not posted)
另外我还有第二个问题。
这是我传递这些POST数据的视图:
def deleteObjects(request):
template = 'delObj.html'
objects = []
for obj in request.POST.items():
if obj('Login'):
todelete = Login.objects.get(obj('Login'))
objects.append(todelete)
context = {'objects' : objects}
return render(request, template, context)
我收到错误"元组对象不可调用" (对于行obj('名称')=='登录' :),但我无法理解原因。 Aren的POST数据元素是类似dict的对象的KEY和VALUE吗?
提前致谢
答案 0 :(得分:0)
是的,POST是一个类似dict的对象,但你似乎对这些工作方式存在误解。 items()
为dict中的每个项返回一个(key,value)元组 - 因此,例如,obj将为('Login', 'jhghghj')
。所以说obj('Login')
是没有意义的:obj不可调用,也不能通过dict表示法访问(这将是obj['login']
)。相反,你会想要这个:
for key, value in request.POST.items():
if key == 'Login':
todelete = Login.objects.get(value)
然而,在这里,我们遇到了您的第一个问题,我无法理解您为什么要进行迭代。就像你说的那样,request.POST是一个类似于dict的对象,你需要一个密钥Login
。所以通常你只需通过Login
得到request.POST['Login']
的值 - 除了你有Login
的两个值,并且POST只是dict-like而不是dict的原因是它为这个用例定义了一个getlist
方法。所以,这就是你想要的:
for value in request.POST.getlist('Login'):
todelete = Login.objects.get(value)