Django - 点击按钮调用def?

时间:2018-01-01 16:11:53

标签: django button get request click

所以我的模板中有这个简单的按钮:

<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&amp; print_btn = Click HTTP 1.1”200

我还希望在终端上打印' Button clicked ',即我希望执行函数 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&amp; print_btn = Click HTTP 1.1”200

解决: 我忘了在urls.py中添加 print_from_button 功能。

感谢所有贡献的人。

1 个答案:

答案 0 :(得分:-1)

如果你想要渲染一些东西,必须返回渲染 -     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'})

然后在客户端 - 在检查员控制台或您使用的任何工具中,您将看到按钮点击了&#39;在value中设置。 确保为Django项目配置的templates目录中存在your-template.html(或您喜欢的任何名称)。