首页 > 解决方案 > How to pass input value to function in view.py

问题描述

Objective:

** To pass input value itemnumbervalue to itemnumber() in views.py

> Error occured:

method object is not subscribable line 17 in view.py

Already applied techniques to correct the problem:

case 1: Tried [] and () both braces

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

I tried many options like "remove get", and tried braces() and []

views.py:

from .forms import 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>

problem details:

To get input from user and give this input to itemnumbervalue in itemnumber() in view.py. I already validated by putting itemnumbervalue='12345678' (without input value from user) is working fine and getting resultant table.

标签: htmldjangodjango-formsdjango-viewsdjango-templates

解决方案


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

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

要查看您在 request.POST 中获得的值,您可以打印它。

同样在print("input valuegiven by user",c)*末尾删除 * 是无效的语法。

PS我尝试重现此问题并通过上述指定方法成功解决。


推荐阅读