【问题标题】:Running django view/function on button click在按钮单击时运行 django 视图/功能
【发布时间】:2021-10-03 13:43:32
【问题描述】:

我有以下按钮:<a class="btn btn-success">Accept</a>。就像this之前的堆栈溢出问题一样,我想在单击按钮后调用我的视图,但我似乎无法让它工作。

我尝试过:使用 AJAX,将按钮视为表单,请求发布数据,但这似乎不起作用。

我怎样才能使它在我的按钮被点击时调用波纹管视图?

def acceptdonation(request, pk):
    Donation.objects.filter(pk=pk).update(views=F('views')+1)
    return HttpResponseRedirect(request.GET.get('next')))

【问题讨论】:

    标签: python django


    【解决方案1】:

    在您想要的视图的模板链接中:

    <a href="{% url 'myapp:myview' %}" class="btn btn-success">Accept</a>
    

    当然,如果需要,您也可以将pk 或其他数据传递给 url。

    【讨论】:

      【解决方案2】:

      如果您想将表单发布到视图中,可以使用:

      function submitToView() {
          var formData = new FormData(); 
          formData.append('some_variable', 'abc'); 
          var xhr = new XMLHttpRequest();
          
          xhr.onreadystatechange = function () {
            if (xhr.readyState == XMLHttpRequest.DONE) {
        
              abc = JSON.parse(xhr.responseText);
          
            }
          }
        
          xhr.open('POST', '/my_view/', true);
          xhr.setRequestHeader("X-CSRFToken", csrftoken);
          xhr.send(formData);
        }
      

      请考虑使用 html 和 urls.py 添加您的 javascript

      【讨论】:

      • 感谢您的详细回复,但我想知道是否可以在不使用 javascript 的情况下做到这一点?在我包含的示例堆栈溢出问题中,有人能够使用默认的 django url
      • 当然,分享你的代码,会很方便
      猜你喜欢
      • 1970-01-01
      • 2018-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多