【问题标题】:Button not executing Django/Python script按钮不执行 Django/Python 脚本
【发布时间】:2020-05-28 23:44:59
【问题描述】:

在我的 home.html 模板中:

  <button type="button" class="btn btn-dark"
          method = 'GET' action = '/action_name/' name="audio_record">Record Audio</button>

在我看来.py:

def audio_functions(request):
    print('called function')

在我的 urls.py 中:

path('/action_name/', views.audio_functions, name='audio-record'),

我做错了什么?

编辑:我将按钮替换为以下建议的版本:

  <a href="{% url 'audio-record' %}" class="btn btn-dark"
    >Record Audio</a>

但是我有一个新问题。我实际上不想通过 url/action_name 重定向到。我只想在浏览器中触发 python 脚本。我该怎么做?

【问题讨论】:

    标签: python django


    【解决方案1】:

    在 html 中:

       <a href="{% url 'audio-record' %}" class="btn btn-dark"
            >Record Audio</a>
    

    和 urls.py

    path('action_name', views.audio_functions, name='audio-record'),
    

    【讨论】:

      【解决方案2】:

      在您的urls.py 中,您不需要前导正斜杠,因为 django 会自动添加它。用这个替换它,它应该可以工作:

      path('action_name/', views.audio_functions, name='audio-record'),
      

      另外methodaction 属性通常会出现在&lt;form&gt; 标记中,而不是button 标记中。还要将按钮上的type 更改为submit

      正如@SALAHEDDINEELGHARBI 所说,你真的应该使用{% url 'audio-record' %} 而不是硬编码网址,但是在这种情况下这不是问题(你不应该在urls 中有一个前导斜杠,因为这会离开到带有双斜杠的 url)

      编辑 - 响应您的编辑: 您不能在浏览器中触发 python 脚本。这是一个常见的误解。 Django 是一个用 python 构建的 web 框架,是的。但是浏览中发生的任何事情都必须在 javascript 中发生。如果你想使用 python,你需要调用一些 django 端点,执行 python,然后将其发送回来。

      【讨论】:

      • 这似乎不起作用(当我单击按钮时,我的终端中没有任何内容)
      • @NBC 我已经更新了答案。如果它仍然不起作用,您可以在单击按钮时添加开发工具的网络部分中显示的内容。请求的响应代码是什么?会发送吗?
      • 好的,我让它工作了,但我想我最初搞砸了。我实际上不想通过 url/action_name 重定向到。我只想在浏览器中触发 python 脚本。非常抱歉,非常感谢您的帮助。
      • 别担心,我添加了一个编辑来回复您在问题中所做的编辑。
      • 啊,明白了。是的,我是这方面的菜鸟。感谢您的澄清!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-15
      • 2018-07-11
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      相关资源
      最近更新 更多