我希望仅当模板的输入中存在变量名时才执行request.POST[variable name]

2024-04-25 01:52:40 发布

您现在位置:Python中文网/ 问答频道 /正文

def sendorder(request):

    items = MenuModel.objects.all()
    if request.method == 'POST':
        for item in items:
            if request.POST['item'+str(item.id)]:
                print(request.POST['item'+str(item.id)])

    return

我在模板中有一些名为item2、item3等的输入,但是这个视图从item1开始计算,这会给出错误,因为没有名为item1的输入存在。如果不存在这样的输入名称,我想绕过它


2条回答

你想先看看是否有什么,如果有,然后做点什么。因此,您正在检查,在本例中使用try和except方法。假设您已经进行了实验,看看是否从请求中得到了什么。(你也可以把穆罕默德的答案混合起来)事情就是这样的。 这里有一个关于其用途的示例链接https://www.w3schools.com/python/python_try_except.asp

for items in item:
    try request.POST['item'+str(item.id)]:
        //do something
    except:
        //Except was hit cause no item1 exists. Maybe run a print to be sure

不要绕过它,而是尝试将array中的ID传递给视图。并据此进行查询

例如:

id_list = request.POST['id_list']  # if you pass id array with key id_list
items = MenuModel.objects.filter(id__in=id_list)
for item in items:
    print(request.POST['item'+str(item.id)])

相关问题 更多 >