0

我正在尝试通过 ajax 在“current.html”上提取一个

处理表单的视图呈现“form.html”

“current.html”类似于:

<script>
    // ajax that pulls the form on a#get_form click 
    // fills up div#mod_post with the result 
</script>

<a id="get_form" href="{% url to the view that handles the form %}">get form</a>

<div id="mod_post" style="display:none;">
    {% include "form.html" %}
</div>

一切都很好,直到这里......表单被很好地检索和显示。

“form.html”类似于:

<script type="text/javascript" src="/the/script/that/should/handle/the/post.js"></script>

<form id="mod_form" action="" method="POST" enctype="multipart/form-data">{% csrf_token %}
    <table class="form">
        {{ form.as_table }}
    </table>
    <input class="submit" type="submit" value="modifica">
</form>

唯一的问题是,每次渲染 form.html 时,它都不会包含以下部分:

<script type="text/javascript" src="/the/script/that/should/handle/the/post.js">
</script>

我在这里做错了什么,显然是的,但我无法发现它。

欢迎任何反馈,谢谢!

4

2 回答 2

0

将相关的 js/css 脚本封装在表单中是一种很好的做法。例如

class MyForm(forms.Form):
    field1 = ...
    field2 = ...
    class Media:
        js = ('script_that_handles_the_form.js',)

在你base.html有一个像这样的块:

{% block scripts %}
  <!--- some scripts that apply to all pages -->
{% endblock %}

然后在你的form.html

{% block scripts %}
  {{ block.super }}    # retain the standard scripts that apply everywhere
  {{ form.media }}     # add the form specific media/scripts
{% endblock %}

<form id="mod_form" action="" method="POST" enctype="multipart/form-data">{% csrf_token %}
    <table class="form">
        {{ form.as_table }}
    </table>
    <input class="submit" type="submit" value="modifica">
</form>
于 2012-05-07T19:49:24.003 回答
0

如果您只是通过 JavaScript 直接转储 HTML 响应,那么这是正常行为。作为安全预防措施,您的浏览器(即所有浏览器)会自动剥离<script>JS 通过任意 HTML 字符串响应添加到页面的标签。

于 2012-05-07T19:31:29.353 回答