如何在单击按钮的单独页面上将现有模板呈现为弹出窗体?

时间:2015-06-18 17:33:28

标签: javascript jquery ajax django

我正在使用Django创建一个Web应用程序,我有一个模板,其中包含一个需要由用户填写的表单,现在我想提供一个选项,以便用户可以通过单独的模板填写此表单在此模板上单击按钮,单击此按钮会将原始表单显示为弹出窗体。我可以在按钮上单击一个单独的窗口打开原始表单,但不能在同一页面上弹出。

我知道它会使用JQuery和AJAX,但我不确定如何实现它。

1 个答案:

答案 0 :(得分:1)

您应该将模板与表单分成两部分:

form.html
{# usual header and containers to work on separate page correctly #}
...
{% includes "your_app/includes/ajax_form.html" %}
....

ajax_form.html
{# just your form here or container that will be sent via ajax only #}
<form ...>
</form>

同样在您希望弹出窗口的模板中,您应该再次添加ajax_form.html模板。不要忘记在表单中设置正确的action,以便向FormView发送请求。

然后,您必须使用覆盖get_template_names方法创建视图:

class YourFormView(FormView):
    ...
    def get_template_names(self):
        if self.request.is_ajax():
            return ['your_app/includes/ajax_form.html']
        return ['your_app/form.html']

常规请求 - 返回完整模板。 Ajax请求 - 仅返回表单模板。