【问题标题】:Get values from Django's form in efective way以有效的方式从 Django 表单中获取值
【发布时间】:2020-05-14 01:13:04
【问题描述】:

我在django 中从form 得到values,如下所示:

            tantou1 = request.POST.get("1tantou", "")
            tantou2 = request.POST.get("2tantou", "")
            tantou3 = request.POST.get("3tantou", "")
            tantou4 = request.POST.get("4tantou", "")

            hidzuke1 = request.POST.get("1hidzuke", "")
            hidzuke2 = request.POST.get("2hidzuke", "")
            hidzuke3 = request.POST.get("3hidzuke", "")
            hidzuke4 = request.POST.get("4hidzuke", "")

这行得通,但我有很多价值要获得,这种方式在我的代码中占用了太多空间。我想问一下,如果没有办法在(例如)循环中定义这个变量?比如:

data_vars = [tantou1="", tantou2="", tantou3="", tantou4="", hidzuke1="", hidzuke2="", hidzuke3="", hidzuke4=""]

for var in data_vars:
    var = request.POST.get(str(var.__name__), "")

还是这样?

【问题讨论】:

  • 你这样做是为了达到什么目的?

标签: python django string


【解决方案1】:

您应该将request.POST 传递到表单的__init__ 中,如下所示:

def view(request):
    if request.method == 'POST':
        form = MyForm(request.POST)

        if form.is_valid():
            form.save()
    else:
        ...

【讨论】:

    【解决方案2】:

    文档说HttpRequest.POSTdictionary-like object

    根据this post,您可以通过多种方式将字典解压到变量中,但他们建议使用命名空间。我刚刚尝试过,它可以工作:

    from types import SimpleNamespace 
    
    n = SimpleNamespace(**request.POST.dict())
    

    然后您可以通过以下方式访问您的变量:

    n.tantou1
    n.tantou2
    

    【讨论】:

      猜你喜欢
      • 2013-06-04
      • 2021-11-15
      • 1970-01-01
      • 2022-09-25
      • 2018-10-29
      • 1970-01-01
      • 1970-01-01
      • 2021-09-04
      • 1970-01-01
      相关资源
      最近更新 更多