【问题标题】:how to pass table row selected using checkbox in html n pass the data to views.py django如何在html中使用复选框传递选择的表格行并将数据传递给views.py django
【发布时间】:2012-03-30 21:40:18
【问题描述】:

我是 python-django 的新手,需要帮助... 我想将选定的表格行从模板传递到views.py,并使用post方法选中复选框......并且可以选择多行...... n 使用 POST 方法将行提交到 views.py 后,所选行应该从模板中消失

template:a.html 
<tr > {% if getlog %}
<form action="{% url list %}" method="post">{% csrf_token %}
<td><input type="checkbox" id="check_all" checked="checked"/></td>          
<thead><th COLSPAN="2">App Name</th>
    <th COLSPAN="2">File Name</th>
    <th COLSPAN="2">Function Name</th>
    <th COLSPAN="2">Path Name</th>
    <th COLSPAN="2">Line No</th>
    <th COLSPAN="2">Level Name</th>
    <th COLSPAN="2">Message</th>
    <th COLSPAN="2">Thread Name</th>
</tr>                                                                
</thead>
{% for log in loglist %}
<tr id="tr1">
<td><input type="checkbox" class="check_field" checked="checked" name="list1"/> </td>
   <td colspan="2" > {{ log.app.appname }} </td>
   <td colspan="2"> {{ log.filename }}</td>
   <td colspan="2" >{{ log.funcname }}</td>
   <td colspan="2" >{{ log.pathname }}</td>
   <td colspan="2" >{{ log.lineno }}</td>
   <td colspan="2" >{{ log.typeid.levelname }}</td>
   <td colspan="2" >{{ log.typeid.message }}</td>
   <td colspan="2">{{ log.threadName }}</td>
</tr>
{% endfor %}      
</tbody>
</table>

怎么做???我哪里出错了? 谢谢...:)

【问题讨论】:

    标签: javascript python django


    【解决方案1】:

    使用非 Django 处理数据提交的方式可能会出错。

    Django 的强大之处在于一个非常强大的表单系统,它可以为您生成表单以及处理常见任务,例如将记录保存到数据库、表单验证等。

    我知道这很痛苦,但是真的值得花一些时间阅读 Django 书籍并做一些示例练习,以便熟悉 Django 基础知识。有了这些,您就可以考虑采取哪些步骤来推进您真正想做的事情。

    您的情况是一个特殊情况,因此简单的表单集或 ModelForm 并不能真正解决问题,这是我推荐的一种实现方式。

    models.py

    class Log(models.Model):
        # whatever fields you want
        date_hidden = models.DateTimeField(null=True, blank=True)
    

    forms.py

    class LogDisplayForm(forms.Form):
        logs_to_hide = forms.ModelChoiceField(required=False, queryset=Log.objects.exclude(date_hidden__isnull=False)
    
        def save(self, *args, **kwargs):
            if self.cleaned_data.get('logs_to_hide'):
                Log.object.filter(pk__in=self.cleaned_data['logs_to_hide']).update(date_hidden=datetime.datetime.now())
    

    然后在您的模板表单中,只需将 list1 重命名为 logs_to_hide 并确保该字段的值是日志记录的主键。这假设您阅读了 Django 的实际工作原理,并知道您将如何处理表单验证和视图中的表单保存。

    请注意,我给您的代码是不完整的,如果您没有大量的额外工作,它将无法工作。 这是

    【讨论】:

    • 好的,我会阅读文档.. 但是还有其他方法可以通过表单传递 数据吗?我读到了其中一个答案 k 它默认情况下 http 对象在 views.py 中发送选中的复选框列表 n 我可以使用 list= request.POST.getlist('checkbox_name') 获取它
    • 对不起,这个问题基本上是无法回答的,因为你对这一切是如何运作的了解不够。我真的认为阅读文档并学习表单如何工作的基础知识是必要的。从根本上说,您正在做的事情不起作用的原因是您需要将实际值发送到您没有做的视图函数。如果您按照我的说明阅读文档,它将起作用。您设置的模板永远不会按原样工作。
    • 谢谢...我正在阅读文档..但没有找到我应该工作的方向..我应该去 django-forms k javascript..因为我需要获取选中的复选框表行..那么我怎样才能将该复选框与表格行绑定?以及如何获得实际数据.. ??困惑...
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签