Как передать входное значение в функцию в view.py - PullRequest
0 голосов
/ 05 апреля 2020

Цель:

** Передать входное значение itemnumbervalue в itemnumber () в views.py

> Произошла ошибка:

объект метода не подписан на строку 17 в view.py

Уже примененные методы для исправления проблемы:

дело 1: пробовал [] и () обе скобки

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

я пробовал много такие параметры, как "удалить получить" и пробные фигурные скобки () и []

views.py:

из .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>

вход. html

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

сведения о проблеме:

Чтобы получить данные от пользователя и передать эти данные itemnumbervalue в itemnumber () в view.py. Я уже проверил, поместив itemnumbervalue = '12345678' (без входного значения от пользователя) работает нормально и получая таблицу результатов.

1 Ответ

0 голосов
/ 05 апреля 2020

Попробуйте использовать request.POST.get('submitted') или request.POST['submitted'].

Разница только в том, что метод .get возвращает None, если ключ не найден в словаре, но с прямым индексированием ключа, если ключ не найден, тогда будет выдано KeyError исключение.

Чтобы увидеть, какие значения вы получаете в запросе. ПОСТ вы можете распечатать.

Также в print("input valuegiven by user",c)* удалить * в конце это неверный синтаксис.

PS Я попытался воспроизвести эту проблему и успешно решил вышеуказанным методом.

...