【问题标题】:request.POST.get returns NULLrequest.POST.get 返回 NULL
【发布时间】:2019-08-26 23:47:16
【问题描述】:

我正在尝试将我的文本值从我的 HTML 表单发布到 Django 视图,但结果总是得到 NONE。

最初,我试图通过 request.POST 获取值,它抛出“MultiValueDictKeyError”,然后我将代码更改为 request.POST.get,它返回 None

HTML 文件

{% csrf_token %}

        <!-- Collect the nav links, forms, and other content for toggling -->
        <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1" style="margin-top: 5px">

            <ul class="nav navbar-nav">

                <li class="dropdown" style="padding-right: 10px">
                    <select class="form-control" id="sel1" style="font-family: Courier">
                        {% for environment in env_list %}
                            <option name="NewEnvName"
                                    value="{{ environment.Env_name }}">{{ environment.Env_name }}</option>
                        {% endfor %}
                    </select>
                </li>
            </ul>
            <ul class="nav navbar-nav">
                <li class="dropdown" style="font-family: Courier;font-size: 20px;color: ivory">

                    <input type='radio' name='CobranSelection' value="CobrandName" checked/>
                    <label for="edit-radios-lorem-tortor-erat" class="option"
                    >Cobrand
                        Name | </label>
                    <input type='radio' name='CobranSelection' value="CobrandId"/>
                    <label for="edit-radios-lorem-tortor-erat" class="option"
                    >Cobrand
                        Id </label>

                </li>
            </ul>


            <div class="form-group">
                <input type="text"
                       style="margin-top: -1px;font-family: Courier;width: 210px;margin-right: -10px"
                       class="form-control"
                       name="cobrand" placeholder="Eneter Cobrand detail here">
                <button type="submit" class="btn btn-default"
                        style="margin-top: -31px;font-family: Courier;margin-left: 230px">
                    Submit
                </button>
            </div>


        </div><!-- /.navbar-collapse -->
    </form>

view.py

    from django.shortcuts import render, HttpResponseRedirect
    from .models import Environments
    from django.db.models import Q
    import cx_Oracle



def knowcobrand(request):
    value_type = request.POST.get('CobranSelection')
    cobrand_value = request.POST.get('cobrand')
    env = request.POST.get('NewEnvName')
    print(value_type)
    print(cobrand_value)
    print(env)
    return render(request, 'CobrandView/CobrandInDepth.html')

urls.py

from django.conf.urls import url
from . import views

urlpatterns = [
    url('login', views.login),
    url('Home', views.fetch_all_env),
    url('AddEnvironment', views.add_environment),
    url('GetEnvironment', views.GetEnvironment),
    url('ReadDb', views.readdb),
    url('LearnCobrand', views.learncobrand),
    url('ReadCobrand',views.knowcobrand)
]

我将发布我的 HTML 和 views.py 以供参考。你们中的任何人都可以通过指出我的错误来帮助我。

【问题讨论】:

  • 如果您能告诉我们您的 HTML 文件的哪个特定部分并查看此内容,那就太好了。我们可以根据您的问题文本做出假设,但我们不应该必须。我仍然做了一个假设,看来这个问题是重复的。您正在尝试读取未提交的字段,因为它已被禁用。
  • 感谢您的回复。在知道 DOM 无法读取禁用元素但我坚持将值从下拉选择传递到我的视图后,它工作得很好。即使我选择了一个特定的值,我也将 None 作为一个值。更新了我的 HTML 和查看代码。

标签: python html django django-forms forms http-post


【解决方案1】:

将此属性添加到您的表单:

enctype="multipart/form-data"

像这样:

<form action="" method="post" enctype="multipart/form-data">

并注意查看端文件字段使用request.FILES

【讨论】:

    猜你喜欢
    • 2020-02-14
    • 2020-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多