python - Django:如何动态加载表单到当前html页面

标签 python ajax django

我有一个简单的表格

class MyForm(forms.ModelForm):

class Meta:
    model = Track
    fields = ['website', 'keyword']
    labels = {'website': 'Website URL', 'keyword': 'Keyword'}

和一个 View

def track(request):
if request.method != 'POST':
    form = MyForm()
else:
    form = MyForm(request.POST)
    if form.is_valid():
        form.save()
        return HttpResponseRedirect(reverse('tb_main:index'))    

context = {'form': form}
return render(request, 'tb_main/track.html', context)

和html表单模板(track.html)

<form action="{% url 'tb_main:track' %}" method='post'>
  {% csrf_token %}
  {% bootstrap_form form %}

 <button name='submit'>Submit</button>
 <input type='hidden' name='next' value="{% url 'tb_main:dashboard' %}" />
</form>

我希望能够在用户单击主页上的按钮时动态加载表单而不更改 url。我假设这可以使用 AJAX 来完成,但我不确定如何解决这个问题。

如果我只是对 track.html 进行 AJAX 调用,则不会附带 View 功能

如何在单击按钮后将 View 和 html 模板动态加载到主页?

我试过<button href="{% url 'tb_main:track' %}">load form</button>

但这不起作用。我们很高兴听到一些更有经验的开发人员讲述如何解决这个问题。谢谢

最佳答案

这里缺少的是附加到该按钮单击的 JS 脚本。像这样的东西(假设是 jQuery):

$('#mybutton').get(
    "{% url 'tb_main:track' %}",
    function(data) { $('#myform').html(data) }
);

和 HTML:

<div id="myform"></div>
<button id="mybutton">load form</button>

关于python - Django:如何动态加载表单到当前html页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49417456/

相关文章:

javascript - RoR - 将提交表单转换为 AJAX

javascript - 浏览器在代码结果中给出了不同的 jquery 错误

python - 在控制台中获取python子进程的输出

Django: AttributeError: 'NoneType' 对象没有属性 'username'

python - 使用 python : KeyError: 'O' 解析文件时出现逻辑错误

Python 创建同义词簇

javascript - jQuery 未捕获类型错误 : Cannot read property 'text' of null

django - 最佳实践 : How to best implement Rating-Stars in Django Templates

python - 按数据框中的日期过滤数据

python - dask 可以并行化从 csv 文件中读取数据吗?