首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从Javascript中呈现Django对象(表单)?

如何从Javascript中呈现Django对象(表单)?
EN

Stack Overflow用户
提问于 2018-04-01 03:41:17
回答 1查看 116关注 0票数 0

我已经使用localStorage.setItem("Key",JSON.stringify(obj))将Django表单元素加载到localStorage中,以便持久化更改。这似乎起作用了。现在我想从Javascript检索对象并将其呈现到我的HTML页面中。我的脚本如下所示:

代码语言:javascript
复制
// This script retrieves the Django form object that was stored as a JSON

// from localStorage, parses it and posts it on the html page

// Get label from document

var myLabel = document.getElementById("currLabelID"  + 
id_suffix).value.replace(/ /g,"");

//alert("CurrLabel = " + myLabel);

// Retrieve the form object from localStorage

var yummy = JSON.parse(localStorage.getItem(myLabel));

// Put form object into page

//var myDiv = document.getElementByName("theFieldPostDiv");

//$( myDiv ).append( yummy );

//var form = document.createElement('form');

//form.appendChild(yummy);

//document.write( yummy );

//{{ yummy }}


//$(document).ready(function() {
//
//        $( "theFieldPostDiv" ).append( yummy );
//
//});

//$( "theFieldPostDiv" ).append( $(yummy) );

//document.body.appendChild(yummy);

//$.append(yummy);

//yummy.post();

$(function() {
    $(".theFieldPostDiv").hide();
    $("#form-group").submit(function(event) {
        event.preventDefault();
        var posting = $.post(".theFieldPostDiv", yummy);
        posting.done(function(data) {
            $(".theFieldPostDiv").show();
        });
        posting.fail(function(data) {
            alert("Fail")
        });
    });
});

注意:"theFieldPostDiv“是我想要在页面中呈现表单对象的位置。

注释代码显示了我尝试实现这一点的几种方法。任何帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

发布于 2018-04-16 17:49:45

因此,我找到的解决方案是,在模板的底部添加以下内容:

代码语言:javascript
复制
{% block js %}

function loadInputLocalStorage(){
    $('#input-form :input').each(function(){
        var key = $(this).attr('id');
        if(localStorage.getItem(key)) {
            var value = localStorage.getItem(key);
            $(this).val(value);
        }
    });
}
loadInputLocalStorage();

function saveInputLocalStorage() {
    $('#input-form :input').each(function(){
        var id = $(this).attr('id');
        var value = $(this).val();
        localStorage.setItem(id, value);

    });
}

$('#input-form').change(function() {
    saveInputLocalStorage();
});


{% endblock %}

在模板的主体中,我有这样的内容:

代码语言:javascript
复制
          {% for boundfield in elements %}

              <div class="form-group">
                  <label class="control-label col-sm-5" style="text-align:right;"
                         for="{{boundfield.id_for_label}}">{{ boundfield.label }}
                  </label>
                  <div class="col-sm-7" id="{{boundfield.id_for_label}}"
                       aria-describedby="{{boundfield.id_for_label}} | addstr:ex">{{ boundfield }}
                  </div>
              </div>

              {% if boundfield.help_text %}
                  <p class="col-sm-offset-5 col-sm-7"> <small style="color: grey">{{ boundfield.help_text|safe }}</small></p>
              {% endif %}

              {% for error in boundfield.errors %}
                  <div class="col-sm-offset-2 col-sm-10"><span class="text-danger small">{{ error }}</span></div>
              {% endfor %}

          {% endfor %}

其中‘element’是从视图传入的。

注意:这不是我自己想出来的,我从Beheen那里得到了巨大的帮助。希望这对下一个人有帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49591700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档