Вопрос:

Django - вызывать def по нажатию кнопки?

django button get request click

1199 просмотра

1 ответ

12 Репутация автора

У меня есть такая простая кнопка в моем шаблоне:

<form method="get">
  <input type="text" value="8" name="mytextbox" size="1" />
  <input type="submit" class="btn" value="Click" name="print_btn">
</form>

В моем views.py у меня есть эта функция:

def print_from_button(request):

    if(request.GET.get('print_btn')):
        print( int(request.GET.get('mytextbox')) )
        print('Button clicked')

это выводит на консоль:

«GET / myview / mytextbox = 8 & print_btn = нажмите HTTP 1.1» 200

Я также хочу, чтобы кнопка « Нажатие кнопки » печаталась на терминале, т.е. я хочу, чтобы выполнялась функция print_from_button , а не только один оператор в функции.

РЕДАКТИРОВАТЬ:

Как предложено в комментариях, я добавил возврат и изменил шаблон:

<form method="get">
    <input type="submit" class="btn" value="Click" name="print_btn">
</form>

Добавлена ​​новая функция:

def hello():
    print('Hello!')

и вернуться в моей целевой функции

def print_from_button(request):
    if(request.GET.get('print_btn')):
        hello()
        print('Button clicked')
    return render(request, 'new/click.html',{'value':'Button clicked'})

но это печатает то же самое:

«GET / myview / mytextbox = 8 & print_btn = нажмите HTTP 1.1» 200

Решено: я забыл добавить функцию print_from_button в urls.py!

Спасибо всем, кто внес свой вклад.

Автор: r3aktormk Источник Размещён: 01.01.2018 04:11

Ответы (1)


-1 плюса

2329 Репутация автора

Решение

Если вы хотите, чтобы что-то было возвращено, необходимо вернуть render - return render(request, 'your-template.html',{}), так что это будет

from django.shortcuts import render

def print_from_button(request):

    if(request.GET.get('print_btn')):
        print( int(request.GET.get('mytextbox')) )
        print('Button clicked')
    return render(request, 'your-template.html',{'value':'Button clicked'})

Затем на стороне клиента - в консоли инспектора или в любом другом инструменте, который вы используете, вы увидите «Нажатие кнопки» value. Убедитесь, что your-template.html(или любое другое имя вы предпочитаете) существует в каталоге шаблонов, настроенном для вашего проекта Django.

Автор: dmitryro Размещён: 01.01.2018 04:22
Вопросы из категории :
32x32