Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python django中使用ajax/dajax的动态表单_Python_Ajax_Django - Fatal编程技术网

Python django中使用ajax/dajax的动态表单

Python django中使用ajax/dajax的动态表单,python,ajax,django,Python,Ajax,Django,我有一个带有查询集的简单表单,用于显示作业对象并允许用户选择一个。现在,我想要一组两个单选按钮,允许用户选择“过滤选项”。如果用户使用单选按钮选择一个组过滤器,我会显示一个下拉列表,允许用户选择要过滤的组。我想在不需要重新加载页面的情况下执行此操作,因此我尝试使用dajax 我在dajax网站上找到了一个做类似事情的例子,但是,我无法让它工作。单选按钮出现,下拉列表显示为空。当我单击组单选按钮时,下拉列表应该填充我的所有组对象,但它没有 我已经在这上面呆了一段时间了,所以任何帮助都将不胜感激 f

我有一个带有查询集的简单表单,用于显示作业对象并允许用户选择一个。现在,我想要一组两个单选按钮,允许用户选择“过滤选项”。如果用户使用单选按钮选择一个组过滤器,我会显示一个下拉列表,允许用户选择要过滤的组。我想在不需要重新加载页面的情况下执行此操作,因此我尝试使用dajax

我在dajax网站上找到了一个做类似事情的例子,但是,我无法让它工作。单选按钮出现,下拉列表显示为空。当我单击组单选按钮时,下拉列表应该填充我的所有组对象,但它没有

我已经在这上面呆了一段时间了,所以任何帮助都将不胜感激

forms.py

ajax.py

模板


您需要将dajaxice函数添加到select onchange以引用模板中的函数

比如:

<select name="combo2" id="combo2" onchange="Dajaxice.your_project.your_appname.updatefilter(Dajax.process,{'option':this.value}" size="1"></select>
用项目名称替换\u项目,用appname替换\u应用程序

还要确保你的模板中有所有必要的标题,并且它们确实存在;e、 例如,如果你查看源代码,你可以点击它们

确保在firefox中使用google chrome inspector Ctrl-Shift-I或firebug进行调试

编辑:我现在注意到你的表格中有类似的东西。当您查看源代码时,它如何在HTML中呈现?转义不正确吗?

我想您忘记了这里的%sign value=和结束符:


out=%s%s%out,o,o

啊哈!单引号环绕选项呈现为39;有没有关于如何在forms.py中转义它们的建议?好的,我通过使用mark_safe在form对象中设置attr来修复转义问题。它现在呈现。但仍然没有工作…:-@纳切夫斯基:你的HTML源文件中有所有正确的标题吗dajaxice.core.js、'jquery.core.js、'jquery-???.min.js'或您使用的任何库?您还可以尝试将“onchange”中的“Dajaxice.tdportal.updatefilter”更改为“Dajaxice.project\u name.app\u name.updatefilter”,并替换为适当的名称吗?我肯定必须指定项目和应用程序名称才能在我的系统上运行。谢谢,我修复了渲染选项。这段代码来自我看到的一个示例,我想它不合适-
def updatefilter(request, option):
    dajax = Dajax()
    options = [Group.objects.all(),
               Host.objects.all(),
               ]
    out = ""
    for o in options[int(option)]:
        out = "%s<option value='#'>%s" % (out,o,)

    dajax.assign('#combo2','innerHTML',out)
    return dajax.json()

dajaxice_functions.register(updatefilter)
    {{selectForm.filter.label}}: {{selectForm.filter}}
    <br>
    <select name="combo2" id="combo2" onchange="" size="1"></select>
    <br><br>
    <form method="post" action="/tdportal/jobs/">{% csrf_token %}
        {{selectForm.jobs}}
        <br><br>
        <input type="submit" value="Edit" />   <a href="/tdportal/jobs/new/"><input type="button" name="new" value="New" /></a>
    </form>
<select name="combo2" id="combo2" onchange="Dajaxice.your_project.your_appname.updatefilter(Dajax.process,{'option':this.value}" size="1"></select>