django 返回ajax html,如何从django模板返回AJAX请求中的django表单对象?

您可以使用Django和JQuery的组合来实现这一点。在

第1步:从_ajax.html模板

模板可以简单到{{form.as_p}}。关键是而不是继承基本模板。你只需使用这个表格_ajax.html用于呈现表单的HTML的模板。在

第2步:创建一个带有slug参数的视图,它可以帮助您获得正确的格式def payment_method_ajax(request, method): # method is your slug

"""Load a dynamic form based on the desired payment method"""

options = {

'ach': ECheckForm(), # Dynamic form #1

'credit-card': CreditCardForm(), # Dynamic form #2

}

if method in options.keys():

context = {'form': options[method]}

else:

context = None

template = 'your_app_name/form_from_ajax.html'

return render(request, template, context)

第3步:在网址.py

^{pr2}$

第4步:更新您希望AJAX加载表单出现的模板

制作一些按钮让用户选择一个合适的表单选项ACH

Credit Card

表单域是加载动态表单的地方

{% csrf_token %}

确保在主视图的上下文中添加slugcontext = {

'target': 'Add a New Payment Method',

'h1': 'Add a New Payment Method',

'ach': 'Save an ACH Profile',

'credit_card': 'Save a Credit Card Profile',

'slugs': ['ach', 'credit-card'], # Here are the slugs ****

}

第5步:用JQuery和按钮的onclick加载表单

var ach = 'ACH';

var creditCard = 'Credit Card';

var form_urls ={

ach : '{% url "payment-method-ajax" slugs.0 %}',

creditCard : '{% url "payment-method-ajax" slugs.1 %}',

}

function load_payment_form(btn) {

if(btn.innerText==ach) {

get_url = form_urls['ach'];

type = ach;

}

else if(btn.innerText==creditCard) {

console.log('Load credit card form');

get_url = form_urls['creditCard'];

type = creditCard;

}

$.get({'url': get_url}).done(

function(data) {

document.getElementById('form-fields').innerHTML = data;})

document.getElementById("id-form").style.display = "block";

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值