在html和python编辑h5页面编辑器导出html查询条件问题。

在此章中,我们建立一个搜索功能,可以通过搜索来对表格进行筛选。&由于之前,我们在res_list.html中预留了search这个block,因此,我们只需要在具体页面中来填充完这个search block就可以了。随后,在views.py中list函数中,完善search功能。&对于三个元素,node,line,device,我们都进行相应的搜索框设置。&1.在views.py中,增加搜索功能。在此,对原先的list函数进行更改,更改如下:#显示各列表信息def lists(request, table):
#从根据不同的请求,来获取相应的数据,并跳转至相应页面
if table == 'node':
#将原先的data更名为raw_data
raw_data = Node.objects.all()
list_template = 'node_list.html'
sub_title = '节点信息'
if table == 'line':
raw_data = Line.objects.all()
list_template = 'line_list.html'
sub_title = '线路信息'
if table == 'device':
raw_data = Device.objects.all()
list_template = 'device_list.html'
sub_title = '设备信息'
#通过GET方法从提交的URL来获取相应参数
if request.method == 'GET':
#建立一个空的参数的字典
kwargs = {}
#建立一个空的查询语句
query = ''
#提交过来的GET值是一个迭代的键值对
for key, value in request.GET.iteritems():
#刨去其中的token和page选项
if key != 'csrfmiddlewaretoken' and key != 'page':
#由于线路和设备的外键均与node表格有关,当查询线路中的用户名称或设备信息中的使用部门时,可以直接通过以下方式跨表进行查找
if key == 'node':
kwargs['node__node_name__contains'] = value
#该query用于页面分页跳转时,能附带现有的搜索条件
query += '&' + key + '=' + value
#其余的选项均通过key来辨别
kwargs[key + '__contains'] = value
#该query用于页面分页跳转时,能附带现有的搜索条件
query += '&' + key + '=' + value
#通过元始数据进行过滤,过滤条件为健对值的字典
data = raw_data.filter(**kwargs)
#如果没有从GET提交中获取信息,那么data则为元始数据
data = raw_data
#将分页的信息传递到展示页面中去
data_list, page_range, count, page_nums = pagination(request, data)
#建立context字典,将值传递到相应页面
context = {
'data': data_list,
'table': table,
'query': query,
'page_range': page_range,
'count': count,
'page_nums': page_nums,
'sub_title': sub_title,
#跳转到相应页面,并将值传递过去
return render(request,list_template,context)2.修改相应页面,首先是节点页面,搜索对象为名称Name值节点名称Node_name节点地址Node_address节点类型Node_typeNode_list.html:{% block search %}
&div class=&col-sm-3&&
&div class=&input-group&&
&span class=&input-group-addon& id=&node_name& &节点名称&/span&
&!-- 如果之前已经写入了node_name的信息,那么页面重新加载后保留--&
&input type=&text& class=&form-control& placeholder=&& aria-describedby=&node_name& name=&node_name&
{% if request.GET.node_name %}value = {{ request.GET.node_name }}{% endif %}&
&div class=&col-sm-3&&
&div class=&input-group&&
&span class=&input-group-addon& id=&node_address&&节点地址&/span&
&input type=&text& class=&form-control& placeholder=&& aria-describedby=&node_address& name = &node_address&
{% if request.GET.node_address %}value = {{ request.GET.node_address }}{% endif %}&
&div class=&col-sm-3&&
&div class=&input-group&&
&span class=&input-group-addon& id=&node_type&&节点类型&/span&
&select class=&form-control& name=&node_type&&
&option value=&&&所有类型&/option&
&option value=&总部& {% if request.GET.node_type and request.GET.node_type == '总部'%} selected{% endif %}&总部&/option&
&option value=&分部& {% if request.GET.node_type and request.GET.node_type == '分部'%} selected{% endif %}&分部&/option&
&/div&{% endblock %}3.修改相应line_list页面,首先是line页面,搜索对象为名称Name值线路编号Line_code用户名称Node运营商Line_spnameLine_list.html:{% block search %}
&div class=&col-sm-3&&
&div class=&input-group&&
&span class=&input-group-addon& id=&line_code& &线路编号&/span&
&input type=&text& class=&form-control&
aria-describedby=&line_code& name=&line_code&
{% if request.GET.line_code %}value = {{ request.GET.line_code }}{% endif %}
&div class=&col-sm-3&&
&div class=&input-group&&
&span class=&input-group-addon& id=&node&&用户名称&/span&
&input type=&text& class=&form-control&
aria-describedby=&node_name& name=&node&
{% if request.GET.node %}value = {{ request.GET.node }}{% endif %}
&div class=&col-sm-3&&
&div class=&input-group&&
&span class=&input-group-addon& id=&sp_name&&运营商&/span&
&select class=&form-control& name=&line_spname&&
&option value=&&&所有运营商&/option&
&option value=&中国电信& {% if request.GET.line_spname and request.GET.line_spname == '中国电信'%} selected{% endif %}&中国电信&/option&
&option value=&电信信网& {% if request.GET.line_spname and request.GET.line_spname == '电信信网'%} selected{% endif %}&电信信网&/option&
&option value=&中国移动& {% if request.GET.line_spname and request.GET.line_spname == '中国移动'%} selected{% endif %}&中国移动&/option&
&option value=&中国联通&
{% if request.GET.line_spname and request.GET.line_spname == '中国联通'%} selected{% endif %}&中国联通&/option&
&option value=&其他&
{% if request.GET.line_spname and request.GET.line_spname == '其他'%} selected{% endif %}&其他&/option&
{% endblock %}4.修改device_list页面,为设备增加搜索项:名称Name值设备名称Device_caption管理地址Device_ip使用部门NodeDevice_list.html:{% block search %}
&div class=&col-sm-3&&
&div class=&input-group&&
&span class=&input-group-addon& id=&device_caption& &设备名称&/span&
&input type=&text& class=&form-control& placeholder=&& aria-describedby=&node_name& name=&device_caption&&
&div class=&col-sm-3&&
&div class=&input-group&&
&span class=&input-group-addon& id=&device_ip&&管理地址&/span&
&input type=&text& class=&form-control& placeholder=&& aria-describedby=&node_address& name = &device_ip&&
&div class=&col-sm-3&&
&div class=&input-group&&
&span class=&input-group-addon& id=&node&&使用部门&/span&
&input type=&text& class=&form-control& placeholder=&& aria-describedby=&node_address& name = &node&&
&/div&{% endblock %}5.以线路搜索为例的页面显示:可以发现不仅页面显示的内容符合搜索项的内容,而且相关的分页信息也随之变化。而且在翻页时,相关搜索内容会保留。
最新教程周点击榜
微信扫一扫python 解析HTML
1. 理解网页上的数据
网页上的数据主要有:
需要一个接受数据并解析的机制
需要一个产生数据并发送的机制
2. 解析HTML
层次化的数据
有多个解析HTML的第三方库,例如:LXML,BeautifulSoup,HTMLParser等等。
解析HTML所面临的问题:
没有统一的标准。
很多网页并没有遵循HTML文档
2.1 BeautifulSoup
  BeautifulSoup第三方库有以下特点:
- 容易使用。
- 版本4允许使用lxml和html5lib,可以更好的处理不规范的HTML。
- 在处理编码方面也比较有效。
  下面是解析方法及优缺点的一个对比:
3 代码示例
  从终端进入python环境,按照以下方式进行试验。如果没有bs4库的话,可以使用以下命令(Ubuntu下)进行安装:
  sudo pip install beautifulsoup4
>>> from bs4 import BeautifulSoup
>>> import urllib
>>> html = urllib.urlopen(“http://192.168.1.33/temwet/index.html“)
addinfourl at
whose fp = socket._fileobject object at 0x9cd19ac
>>> html.code
  下面看一下网页的源代码:
  使用BeautifulSoup进行解析:
  使用bt = BeautifulSoup(html.read(),"lxml")语句对接收到的html进行解析,bt.title, bt.meta, bt.title.string, bt.find_all('meta')进行元素的查找。对查找到的多个结果,可以以数组的形式存储和访问。
  如果想提取网页中含有的超链接呢?我们只需要查找到”a”标签,并将其提取出来即可。links = bt.find_all("a') 可将网页中所有的超链接保存在links中,如果len(links)等于0的话就是网页中没有超链接,否则直接以数组的方式访问即可。问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
如图所示,用python爬取的html页面和浏览器显示的内容有些出入。照理说爬取的同样是服务器端静态的html页面,怎么会有不同呢?
网站地址:
爬虫源码:
# -*-coding:UTF-8-*-
from urllib.request import urlopen
from bs4 import BeautifulSoup
html = urlopen("/pages/page3.html")
bsObj = BeautifulSoup(html,"lxml")
for child in bsObj.find("",{"id": "giftList"}).contents:
print(child)
这个问题可能有点“孔乙己”,不过我确实挺好奇它的原因的,希望有人能不吝赐教
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
经过实测,结论是 bs4 改变了属性的顺序。
1、在浏览器中右键点击页面,选:
查看网页源码
2、在 python3 程序中对比:
ptn_tr = re.compile(r'&tr[^&]+&')
import requests as req
rsp=req.get('/pages/page3.html')
html = rsp.text
print('requests:\t', ptn_tr.findall(html)[0])
from urllib.request import urlopen
rsp = urlopen("/pages/page3.html")
html = rsp.read().decode()
print('urlopen:\t', ptn_tr.findall(html)[0])
from bs4 import BeautifulSoup
html = str(BeautifulSoup(html,"lxml"))
print('bs4Soup:\t', ptn_tr.findall(html)[0])
&tr id="gift1" class="gift"&
&tr id="gift1" class="gift"&
&tr class="gift" id="gift1"&
分享到微博?
Hi,欢迎来到 SegmentFault 技术社区!⊙▽⊙ 在这里,你可以提出编程相关的疑惑,关注感兴趣的问题,对认可的回答投赞同票;大家会帮你解决编程的问题,和你探讨技术更新,为你的回答投上赞同票。
明天提醒我
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
扫扫下载 App

我要回帖

更多关于 html 页面编辑 的文章

 

随机推荐