分享

python flask应用

 java_laq小馆 2014-11-18

1.背景


       一直想自己动手写个web app玩玩,前几天看了一个github的resume自动生成的web-app,所以就动手仿造了一个csdn的简历生成器。结构很简单,前端是 html/css文件(这个模仿了github的那个网页,因为博主不太懂前端)。后台是一个爬虫软件,可以把csdn的个人信息爬下来,然后显示出来, 最后部署到了百度云。百度的云数据库,真是坑爹.......,我调试了半天,目前还无法insert数据。好了,先上个图,项目地址http://resumecsdn./

                         (1)起始页面


                       (2)生成的简历


2.项目介绍

   
    (1)前端

       前端主要就是html和css,这个我是参考别人的改的,有过代码经历的人应该都比较容易。前端和后台的交互,主要是通过先在html里设置method,然后就可以{{{data}}这样传输数据了,这个比较容易,大家在代码中一看就明白,不多说了。

     (2)flask

        flask是一个比较轻便的python web框架,博主本来打算用豆瓣那个的(豆瓣的后台是python写的),但是发现太难,所以转而用flask。flask的好处是很直接明了。
  1. @app.route('/')  
  2. def home():  
  3.    #mysql_manager.sql_connect()  
  4.       
  5.    return render_template('index.html')  
  6.  
  7. @app.route('/signup', methods=['POST'])  
  8. def signup():  
  9.     #session['username'] = request.form['username']  
  10.     session['message'] = request.form['message']  
  11.     return redirect(url_for('message'))  
       像这样,利用app.route就可以直接获得网页路径,render_template('index.html')就是打开index页面。它的文 件结构可以给大家看下,所有的html都是存放在template文件夹,然后css这些配置文件还有数据库可以放到static文件夹。

     这个框架的好处是,基本看一眼例子就可以动手开搞了,推荐一个网站:http:///blog/2012/10/building-websites-in-python-with-flask/


    (3)crawler
  
       介绍一下crawler文件,也就是后台的爬虫文件吧。因为要伪装成是浏览器浏览,所以加了个head,这样可以避免一些反爬虫网站。剩下就是用urllib的函数加上正则匹配就比较容易搞定了。
  1. headers = {    
  2.     'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'    
  3.      }    
  4.    req = urllib2.Request(    
  5.     url='http://blog.csdn.net/'+name,    
  6.     headers = headers    
  7.     )    

    
  (4)部署到BAE

        BAE怎么说呢,mysql功能文档很少,这点让我很不爽。但是其他功能还是可以的,特别是支持很多python的第三方库,可以在requirements.txt里面定义。
       用法:注册一个账号,然后它会给你一个git地址,clone到本地。然后就可以修改了,当然,改好了还得push上去,每次修改都得点击“快捷发布”。



下面是一些要注意的地方:

1.首先是app.conf,url要加星号。
  1. handlers:  
  2.   - url : /.*  
  3.     script: __init__.py  


2.然后,把需要的第三方库加在requirements.txt里,这样bae会自动帮你安好。
  1. flask  
  2. MySQL-python  


3.注意本地调试,和放到BAE的区别

本地调试运行程序是以下语句__init__.py文件内,然后就可以在浏览器查看了
  1. if __name__ == '__main__':  
  2.      app.run()  


放到BAE上要把本地调试的语句注释掉,在__init__.py里加上:
  1. from bae.core.wsgi import WSGIApplication    
  2. application = WSGIApplication(app)    


4.本地调试每次调完要注意kill线程,方法是在shell里:
  1. lsof -i:5000  

然后在kill掉对应的ID号


 
     
 --------------------------------------------------------------------------------------------------------------------------------------------------------       
       差不多这些就够了,大家想更深的了解可以去项目看 github地址   项目演示地址
           麻烦大家看的时候,给个star,拥有star100+项目一直是我的梦想委屈



/********************************

* 本文来自博客  “李博Garvin“

* 转载请标明出处:http://blog.csdn.net/buptgshengod

******************************************/


来自:http://blog.csdn.net/buptgshengod/article/details/40541949


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多