从Ajax获取html格式的Django表单
Get Django form in html from Ajax
我有一个django页面,里面有一个完整的日历。我的用例是,我想点击一个事件,它会打开一个弹出窗口来编辑它(该事件是django模型)。我想我找不到合适的关键词,因为我找不出任何简单的方法来做到这一点。理想情况下,我希望在我的视图文件中有一个get方法,它只返回html中的表单,我会在一个带有Ajax调用的fullcalendar回调中调用它,然后用它填充弹出框。
我不是网络专家,如果我的词汇不正确,很抱歉:-)。
干杯,Emmanuel
对于基于类的视图,您可以这样制作:
1) 通过ajax(JSON格式)为视图的返回内容编写AjaxMixin,并将其添加到所需的view中,返回表单
class LazyEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, Promise):
return force_text(obj)
return obj
class AjaxViewMixin(View):
"""
A mixin that can be used to render a JSON response for CBV.
"""
payload = {}
def render_to_response(self, context, **response_kwargs):
if self.request.is_ajax():
html = render_to_string(self.template_name, context, context_instance=RequestContext(self.request))
payload = {'success': True, 'html': html}
payload.update(self.payload)
response_kwargs['content_type'] = 'application/json'
return HttpResponse(json.dumps(payload, cls=LazyEncoder), **response_kwargs)
return super(AjaxViewMixin, self).render_to_response(context, **response_kwargs)
2) 在这样的html页面上:
$('open_form_button').on('click', function(e){
e.preventDefault();
$.post( '{% url 'view_which_return_form' %}' , function(data) { //may use and get, no sense
if (data.success) {
$('#place_for_form').html($($.parseHTML(data.html,document,"true")).filter('*'))
}
});
});
意识到这一点——您可以通过Ajax在变量"html"中返回呈现的表单块,并将其插入到所需位置。记住使用
$($.parseHTML(data.html,document,"true")).filter('*')
对于返回的数据,或者返回块中的脚本无法正常工作。
相关文章:
- 在django表单集中添加/删除表单的Javascript
- 如何从django表单库中隐藏复选框,并使用Javascript切换其显示属性
- Jquery自动完成值没有传递给django表单
- 在模板中为Django表单分离媒体类对象的JS和CSS列表输出
- 如何在Django表单中设置可接受的文件类型'的FileInput小部件
- 防止使用django表单资产进行Javascript缓存
- 将JS中的一个变量插入Django表单输入字段
- 如何使用带有 html 的 Django 表单制作提交按钮
- 用 JavaScript 填充 Django 表单
- 添加将Excel数据粘贴到Django表单的功能
- 欧芹.js在我的 Django 表单验证中不起作用
- 使用 Django 表单通过 AJAX 上传文件
- 如何在 Django 表单中添加标签 ID
- jQuery和Django表单验证重新加载并提交事件侦听器
- Django表单中的非ASCII字符发出警告
- Uncaught TypeError:从Django表单发送AJAX时没有方法ajaxSend
- 从Ajax获取html格式的Django表单
- 选中复选框后提交django表单
- Django表单:禁用提交按钮,完成后重新启用
- 包括模板与动态Django表单