flask基础实现不再赘述,不了解的同学可以通过官方文档学习
http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-iii-web-forms
在forms.py中添加如下代码:
1234567 | # -*- coding: utf-8 -*-from flask.ext.wtf import Formfrom wtforms import StringFieldfrom wtforms.validators import DataRequired class WhoisForm(Form): myDomain = StringField(\’myDomain\’, validators=[DataRequired()]) |
很简单,跟官方教程差不多
新建一个whois.html文件,代码如下:
1234567891011121314151617181920212223242526272829 | lang=\”en\”> charset=\”UTF-8\”> align=\”center\”>Whois信息查询 style=\”HEIGHT: 22px\”> align=\”center\”> align=\”center\”> style=\”HEIGHT: 30px\”>
|
这里只为做实例,所以没有设置继承模板,如果是一个整体的项目,建议通过继承实现,保持风格一致。
实例通过whois模块得到相关信息,返回的结果是一个字典,如图所示
所以用了以下jinja2语句将信息输出到网页上
123456 |
|
在views.py中添加实现代码
1234567 | @app.route(\’/whois\’,methods=[\’GET\’,\’POST\’])def Whois(): form = WhoisForm() if form.validate_on_submit(): info_dict = GetWhois.MyWhois(form.myDomain.data) return render_template(\’whois.html\’,form = form, info = info_dict) return render_template(\’whois.html\’,form = form) |
其中GetWhois.MyWhois函数的实现,在GetWhois.py中实现,具体为
123456789101112 | #!/usr/bin/env python# -*- encoding: utf-8 -*- import whois def MyWhois(mydomain): try: w = whois.whois(mydomain) return w except Exception,e: print Exception,e return {} |
ok,程序到这里基本可以实现需要的内容了,查询效果如图
我们看到输出到网页时,如status、domain_name等字段的值是列表,是否可以将其进一步分解输出呢,答案是可行的。
我们可以利用jinja2的内建检查器来判断参数是否为list,若是,则分解打印
于是将whois.html修改成
12345678910111213141516 |
|
执行后看效果图,What The Fuck!!!字符串也被分解打印了。
再次修改,判断为字符串,则先打印,然后再去判断是否为List
123456789101112131415161718 | <table width=\”800px\” border=\”1\”>{% for key in info %} <tr><td width=\”150px\” align=\”left\”> {{ key }} :</td> <td aligh=\”left\”> {% if info[key] is string %} {{ info[key] }} {% elif info[key] is sequence %} {% for value in info[key] %} {{ value }}<br/> {% endfor %} {% else %} {{ info[key] }} {% endif %} </td> </tr>{%endfor%} </table><br/> |
终于乖乖的出来了我们期盼的结果
实例写完后,目录结构为
12345678910111213 | |____app| |______init__.py| |____forms.py| |____GetWhois.py| |____static| | |____images| | | |____logo.png| |____templates| | |____whois.html| |____views.py|____config.py|____run.py|____tmp |
学习了flask的form基本实现,jinja2的部分语法。
附录 内建检查器: