我有另一种方法来获取复选框列表

2024-05-12 13:34:11 发布

您现在位置:Python中文网/ 问答频道 /正文

大多数人推荐的方法:

files_form_checked_chkbox = request.POST.getlist("file_of_chkbox")
for every_file in files_form_checked_chkbox:
    #do somethig

这是我发现的方法:

keys = request.POST.keys()
for key in keys:
    if key != "csrfmiddlewaretoken":
        #do somethig

这是我的模板:

<p>List</p>
<form action="..." method="post">
    {% csrf_token %}
    {% for key in keys %}
    <p>
        <input type="checkbox" name="file_of_chkbox" value="{{key}}">
        <a href="..." >{{key}}</a>
    </p>
    {% endfor %}
    <input type="submit" value="Delete files" />
</form>

两种方法可以做同样的事情

我明白了。A肯定比B好,A被解释了很多次。 我使用请求

但我想知道为什么不推荐B和reson


Tags: of方法keyinformforrequestfiles
2条回答

我更喜欢B方法,这个方法实现了“同步器令牌模式”,以防止跨站点请求伪造漏洞

了解有关CSRF的更多信息:

http://en.wikipedia.org/wiki/Cross-site_request_forgery

https://www.owasp.org/index.php/Cross-Site_Request_Forgery_%28CSRF%29_Prevention_Cheat_Sheet

B和A做的事情不一样

request.POST.keys()上循环时,通过获取甚至不需要的POST参数,您正在做大量额外的工作

第一个选项就是做你需要做的事情——获取复选框值列表。它是可读的

相关问题 更多 >