【问题标题】:Access form data of post method in Django在Django中访问post方法的表单数据
【发布时间】:2017-02-21 05:04:44
【问题描述】:

我想访问views.py 中的post 方法数据。我正在遵循将纯 html 用于表单而不是 Django 表单类的过程。我尝试了解决方案 MultiValueDictKeyError in Django 但它仍然无法正常工作。帮帮我

index.html

<form action="{% url "Sample:print" %}" method="post">
    {% csrf_token %}
    <input type="text" placeholder="enter anything" id="TB_sample"/><br>
    <input type="submit" value="submit">
</form>

views.py

def print(request):
    value=request.POST['TB_sample']
    # value = request.REQUEST.get(request,'TB_sample')
    # value = request.POST.get('TB_sample','')
    print(value)
    return render(request , 'static/Sample/print.html',{"data":"I want to pass here 'Value'"})

我尝试了所有注释类型。我仍然得到很多错误。这些解决方案都不起作用。

【问题讨论】:

    标签: python django


    【解决方案1】:

    重命名函数的打印名称(您称为 def print )。永远不要命名 python 内置函数的函数。

    首先,您必须为输入字段命名以获取 post 参数。喜欢,

    <input type="text" placeholder="enter anything" name="TB_sample" id="TB_sample"/>
    

    那么,你输入了

    value=request.POST['TB_sample']

    在 django 函数中。如果没有名为 TB_sample 的参数,则抛出 MultiValueDictKeyError。始终写入,

    value=request.POST.get('TB_sample')

    输出 None 而不是抛出错误。

    【讨论】:

    • 当我使用 value=request.POST.get('TB_sample') 它引发 'str' 对象没有属性 'POST'
    • for value=request.POST['TB_sample'] 在我尝试了您的解决方案后,它会引发 MultiValueDictKeyError
    • 男人!你给你的函数名打印!将此打印功能重命名为其他名称。另请参阅编辑后的答案。
    【解决方案2】:

    给输入'name'&lt;input name="firstname" type="text" value="firstname"&gt;

    在 django 中 (views.py)

    def register_form(request):
        if request.method =='POST':
            name = request.POST['firstname']
            print(name)
    
        return redirect('/')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-03
      • 1970-01-01
      • 2014-02-26
      • 1970-01-01
      • 2012-01-27
      • 2014-08-17
      • 2013-02-25
      • 2013-08-24
      相关资源
      最近更新 更多