不要将Django表单值提取到javascript函数

时间:2017-02-23 10:33:10

标签: javascript python django

我正在尝试从我的Django表单中获取RadioSelectBox值到我的模板与javascript部分。但是我没有克服这个变量并把它放在我的模板中。

我有一个非常简单的形式:

def ChoiceTheme(request) :

    if request.method == 'POST':

        form = ThemeForm(request.POST or None)

        if form.is_valid():
            theme = form.instance.favorite_theme
            print theme
            post = form.save()
            return HttpResponseRedirect(reverse('accueil'), {"theme":theme})

    else:
        form = ThemeForm()

    context = {
        "form":form,
    }

    return render(request, 'Theme.html', context)

我使用print theme获得了良好的字段值。

但我想将此变量放在我的html模板中:

{% block content %}

<style>
    ul li {
        list-style: none;
    }
</style>

<div class = "col-sm-8">
        <form class = "form" method='POST' action=''> {% csrf_token %}
                <h3> <span class="glyphicon glyphicon-file"></span> Choix du thème DatasystemsEC </h3>
                <br></br>
                {{ form }} 
                <br></br>
                <button> Valider le thème </button>

            <script>
            theme = "{{  }}"
            $(function() {
            $('button').click(function() {
                alert("Vous avez choisi le thème : " + theme);
            });
            })(jQuery);
            </script>
        </form>
</div>

{% endblock content %}

我有theme = {{ theme }},但我的警报窗口只显示:

  

Vous avez choisilethème:

你知道吗?我在这一点上非常狡猾,因为我没有看到这种方式......

1 个答案:

答案 0 :(得分:0)

要在django中提取主题选项,您必须执行类似于此的ajax请求:

$(function() {
    $('form').submit(function (event) {
        event.preventDefault();
        $.ajax({
            url: "/choicetheme",
            data: $('form').serialize(),
            type: 'post',
            success: function (data) {
                alert(data.theme);
            }
        });
    });
})(jQuery)

但是你也可以在javascript中将它发送到django之前提取选项,但是你需要知道IE中你选择主题的选项元素中的元素。