0

我在 Django 中有一个带有 foo 循环的模板,大致如下所示:

{% if items %}

<form method="post" name="managerform" id="managerform" action="">{% csrf_token %}
{{ managerform }}
</form> 

{% for item in items %}

<script type='text/javascript'>
var yes = function yes() { manager(function(response) {
if(response && response.status == 'user') {        
var object = '{{ item }}'
document.managerform.item.value = object;
document.managerform.preferences.value = "Yes";
document.managerform.submit();
} 
else{ 
authUser(); } });}
</script>
...
<button onclick=yes()>Yes</button>
...
{% endfor %}

哪个提交表单,问题是它总是提交最后一个itemfrom items。我尝试过提出yes一个论点,aitem但这没有帮助,因为使用<button onclick=yes("{{item}}")>完全失败并且正在做:

<script>
aitem="{{ item }}"
</script>
<button onclick=yes(aitem)>

只是再次使用最后item一个items

对任何人来说,有一个明显的解决方案吗?

4

1 回答 1

2

将按钮的 HTML 更改为:

<button onclick='yes("{{item}}");'>Text</button>

并在您的 django 条件和循环之外完全取出<script>代码,使其始终可用,但将其更改为:

var yes = function (item) {
    manager(function (response) {
        if (response && response.status == 'user') {
            var object = item;
            document.managerform.item.value = object;  // You could combine this and the previous line
            document.managerform.preferences.value = "Yes";
            document.managerform.submit();
        } else {
            authUser();
        }
    });
}

这样,您的 djangofor循环中唯一的东西就是按钮,每个按钮最终都有一个不同的yes函数参数。该yes函数现在接受一个参数并按照您的需要使用它。不过,您可能必须修改它以满足您的需求,因为您的代码片段看起来像一个示例,而不是您所拥有的。

于 2012-10-28T21:47:35.043 回答