如何将输入值传递给view.py中的函数

时间:2020-04-05 11:22:56

标签: html django django-forms django-views django-templates

目标:

**要将views.py

中的输入值 itemnumbervalue 传递给 itemnumber()

>发生错误:

方法对象不是view.py中的第17行可订阅的

已经应用技术来纠正问题:

情况1:尝试使用 [] ()两种括号

if (request.POST.get['submitted']):
                c = request.POST['ENTER_ITEM_NUMBER']

我尝试了许多选项,例如“删除获取” ,并尝试了 braces()和[]

views.py:

从.forms导入InputForm

def home_view(request):
    context1 ={}
    context1['form'] = InputForm(request.POST)
    return render(request, "input.html", context1)

def itemnumber(request):
    if (request.POST.get['submitted']):
        c = request.POST['ENTER_ITEM_NUMBER']
        print("input valuegiven by user",c)*
        cursor = connection.cursor()
        try:
            itemnumbervalue =  c
            C=cursor.execute(f"EXEC ValidateBusinessrule '0000000000{itemnumbervalue}'")
            result_set = cursor.fetchall()
            result_set1= [' {} '.format(x) for x in result_set]
            context = {"row": result_set1}
            return render(request, "home.html", context)
        finally:
            cursor.close()

forms.py

class InputForm(forms.Form):
    regex = re.compile('^([1-9]{8})$', re.UNICODE)
    ENTER_ITEM_NUMBER= forms.RegexField(max_length=8, regex=regex,help_text=("Required 8 digits between {0-9}."))

home.html

 <body>
    <table>
        <tr>
            <ul>
                <th>(column 1,column 2)</th>
            </ul>
            <tr>
            <ul >

                {% for row in row %}
                <td style= "text-align: center;">
                    {{  row }}
                </td>
            </ul>
        </tr>
        {% endfor %}
        </tr>
    </table>
</body>

input.html

    <body>
<form action = "{% url 'item'%}" method = "POST">
    {% csrf_token %}
    {{form}}
    <input type="submit" value=Submit" name="submitted">
</form>
</body>

问题详细信息:

要从用户那里获取输入并将其输入到view.py中itemnumber()中的 itemnumbervalue 中。我已经通过放置itemnumbervalue ='12345678'(没有来自用户的输入值)进行验证,并获得了结果表。

1 个答案:

答案 0 :(得分:0)

尝试使用request.POST.get('submitted')request.POST['submitted']

不同之处在于,如果在字典中找不到键,.get方法将返回None,但是如果没有找到键,则直接索引键,它将抛出KeyError异常

要查看正在请求的值。POST可以打印出来。

还在print("input valuegiven by user",c)*中删除语法无效的结尾的*。

P.S。我尝试重现此问题,并通过上述指定方法成功解决了该问题。