Django 2.7.6版本表头全选复选框实现及Python 2.7.6下获取方法
问题1:Django环境下设置表头「Select all」全选复选框
注:官方未发布过Django 2.7.6版本,该版本号大概率是你混淆了Python 2.7.6和Django版本号,以下方案适配Python 2.7对应的所有Django主流版本
- 如果你用的是Django Admin列表页:默认表头自带全选复选框,确认你的
ModelAdmin中没有设置actions = None即可显示,也可以手动指定action_on_top = True强制在顶部表头显示全选框。 - 如果你是自定义模板渲染列表:直接在表头对应
<th>标签中插入全选框代码,配套JS实现全选逻辑即可:
<!-- 表头位置 --> <th><input type="checkbox" id="select-all" name="select_all"></th> <!-- 每行的选择框统一加class --> <td><input type="checkbox" class="row-select" name="row_id" value="{{ obj.id }}"></td> <script> document.getElementById('select-all').addEventListener('change', function(e) { document.querySelectorAll('.row-select').forEach(item => { item.checked = e.target.checked; }); }); </script>
问题2:Python 2.7.6版本下获取表头复选框
分不同场景给出方案:
场景1:Django后端获取前端提交的全选状态
直接从请求对象中读取对应参数即可:
if request.method == 'POST': # 复选框勾选时会提交on,未勾选时不会传参,默认设为False select_all_status = bool(request.POST.get('select_all', False))
场景2:爬虫场景解析页面获取表头复选框
使用适配Python 2.7的BeautifulSoup 4.9.3版本解析:
from bs4 import BeautifulSoup import urllib2 response = urllib2.urlopen("目标页面地址") html = response.read() soup = BeautifulSoup(html, 'html.parser') # 按属性定位全选复选框 select_all_checkbox = soup.find('input', {'type': 'checkbox', 'id': 'select-all'}) # 也可先定位表头再找子元素 header_col = soup.find('th', class_='action-checkbox') select_all_checkbox = header_col.find('input', type='checkbox')
场景3:自动化测试场景获取表头复选框
使用适配Python 2.7的Selenium 3.141.0版本操作:
from selenium import webdriver driver = webdriver.Chrome() driver.get("目标页面地址") # 按ID定位 select_all = driver.find_element_by_id("select-all") # 按XPath定位 select_all = driver.find_element_by_xpath("//thead//input[@type='checkbox']")
参考图示:
内容的提问来源于stack exchange,提问作者dreamer
相关产品推荐
相关产品推荐

