繁体   English   中英

通过Javascript传递Django变量

[英]Pass Django Variable Via Javascript

我是Java的新手,正在尝试弄清楚如何在HTML表单中获取变量的值。 我有以下代码可以正常工作,我发出了警报以测试我的逻辑,而else语句正在工作,但是如果将值设置为on,我似乎无法弄清楚如何使Javascript提交表单。 我知道在通过警报进行测试时,我的价值也得到了正确的解释。 它似乎只是不想提交表单。 我已经浏览了SO,看来Javascript提交语法可能已更改? 这是我的Javascript函数:

document.getElementById('ifon').onclick = function(){
  var getval = Checkbox(this.form);
  if (getval == 'on') {
    document.getElementById("data").submit();
}  else {
    alert(getval);
  }
}

这是有关表单的HTML:

<form id="data" name="form_name" action="{% url 'foo:bar' record.id %}">
  <input type='hidden' name='status' value="Delete">
</form>

我是Java语言的新手,所以也许我错过了一些东西。 这是一个复选框,Javascript似乎知道根据我的测试该值是什么。 我似乎无法收到该表格。 我在这里先向您的帮助表示感谢。

只是为了简化事情和对Javascript的理解,我做了一些工作,可以确认我已经掌握了基础知识。 这是我的表格

<form id="data" name="form_name" action="{% url 'foo:bar' record.id %}" method="POST">
  <input type='hidden' name='status' value="Delete">
</form>

<script>
function submitform()
 {
    document.form_name.submit();
 }
 </script>

该代码似乎无效。 也没有错误消息。

基本的Javascript原理正在发挥作用,因为当我将脚本更改为简单的内容时...

<script>
function submitform()
 {
   alert("hi!");
 }
 </script>

实际上,我看到一个弹出窗口,说“嗨! 所有这些都基于具有下面概述的onclick的按钮。 这一切都很好。

  <button type="button" onclick="submitform()" class="button9"><h3 class="txtalgn1">Link</h3></button></a>

我安装的Java语言的基础知识似乎可以正常工作。 我已经更新了我的观点,包括以下内容:

class BookUpdateView(LoginRequiredMixin,NeverCacheMixin,UpdateView):
    model = Book
template_name = 'book/book_update.html'
form_class = book_Update        

@method_decorator(csrf_exempt)
def dispatch(self, request, *args, **kwargs):
    return super(BookUpdateView, self).dispatch(request, *args, **kwargs)

def form_valid(self, form):
    self.kwargs['status'] = form.cleaned_data['status']
    return super(BookUpdateView, self).form_valid(form)

但是Javascript提交似乎仍然无法正常工作,或者如果不是,则不会根据状态执行删除...

这是执行javascript所需的方法,基本上是在模板中的check控件中添加一个自定义类(假设您正在使用复选框控件来查看代码中的内容),然后捕获它,询问是否被选中,然后提交到您已经设置的URL:

$('.mycheck').click(function(){
      if ($(this).is(':checked')){
          var frm = document.getElementById("data");
          frm.submit();
      }
});

如果您使用的是django,则需要在django端正确编码的视图(和url)。 请注意, 默认情况下,csrf保护处于启用状态 ,您需要在django视图中添加csrf_exempt装饰器,或使用此方法从页面中检索csrf令牌

如果您使用表单,则视图应如下图所示:

def myview(request):
    if request.method == 'POST':
        form = yourimportedform(request.POST)
        if form.is_valid():
            yourvariable = form.cleaned_data['yourdataname']

编辑:如果您正在运行开发服务器,则应该能够在启动它的终端中实时查看http调用的日志。这应该可以帮助您找到错误所在。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM