三、参考资料

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

一、Flask简介Flask 是一个 Python 实现的 Web 开发微框架。官网:http://flask.pocoo.org/

二、Demo1、代码结构.

├── blog.py

├── static

│ ├──CSS│ │ └── index.css

│ ├── images

│ │ ├──cat.jpg

│ │ └── sheying1229.jpg

│ └── js

└── templates

├── index.html

├──login.html

├── regist.html

└── upload.html5directories,8files

2、主程序blog.py#!/usr/bin/python#coding:utf8fromflaskimportFlask, render_template, url_for, request,redirect,make_response,sessionimportos,MySQLdb

app= Flask(__name__)

app.secret_key='afjlsjfowflajflkajfkjfkaljf'user_list= ['jim','max','py']

imagepath= os.path.join(os.getcwd(),"static/images")

@app.route('/')defindex():

username= request.cookies.get('username')ifnotusername:

username= u'请先登录'islogin= session.get('islogin')

nav_list= [u'首页',u'经济',u'文化',u'科技',u'娱乐']

blog= {'title':'welcome to my blog','content':'hello, welcome to my blog.'}

blogtag= {'javascript':10,"python":20,"shell":5}

img= url_for('static', filename="images/cat.jpg")returnrender_template('index.html', nav_list=nav_list, username=username, blog = blog, blogtag = blogtag, img=img, islogin=islogin)

@app.route('/reg', methods=['GET','POST'])defregist():ifrequest.method =='POST':

username= request.form['username']

conn= MySQLdb.connect(user='root',passwd='admin',host='127.0.0.1')

conn.select_db('blog')

curr=conn.cursor()

sql='insert into `user` (`id`,`username`) values (%d,"%s")'% (1,username)

curr.execute(sql)

conn.commit()

curr.close()

conn.close()return"user %s regist ok!"% request.form['username']else:#request.args['username']returnrender_template('regist.html')

@app.route('/upload', methods=['GET','POST'])defupload():ifrequest.method =='POST':

username= request.form['username']

file= request.files['img']

filename=file.filename

file.save(os.path.join(imagepath,filename))return"<img src='static/images/%s' alt=''/>"%filenameelse:returnrender_template('upload.html')

@app.route('/login/', methods=['GET','POST'])deflogin():ifrequest.method =='POST':

username= request.form.get('username')ifusernameinuser_list:

response= make_response(redirect('/'))

response.set_cookie('username', value=username, max_age=300)

session['islogin'] ='1'returnresponseelse:

session['islogin'] ='0'returnredirect('/login/')else:returnrender_template('login.html')if__name__=='__main__':

app.run(debug=True,host='0.0.0.0',port=5000)

主要有首页、注册、登录、上传页面。

blog.py主要是展示了Flask中常见功能用法:路由,数据库操作,cookie,session,redirect,表单,文件上传,调试,Web服务器的IP和端口,静态文件读取等。

3、首页模板index.html<!DOCTYPE html><html><head><metacharset="utf-8"/><title>Flask DEMO</title><linkrel="stylesheet"type="text/css"href="static/css/index.css"/></head><body><divclass="header">{%if islogin == '1' %}<h1>Welcome ,{{username}}!</h1>{%else%}<h1>{{username}}!</h1>{%endif%}<divclass="nav"><ul>{%for nav in nav_list%}<li><ahref="{{nav}}">{{nav}}</a></li>{%endfor%}</ul></div></div><divclass="container"><divclass="item"><h1>{{blog['title']}}</h1><divclass="content"><imgsrc="/static/images/cat.jpg"alt="cat"/><p>{{blog['content']}}</p><imgsrc="{{img}}"alt="cat"/></div></div><divclass="side"><ul>{%for key,value in blogtag.items()%}<li>{{key}}({{value}})</li>{%endfor%}</ul></div></div></body></html>

这个模板主要展示了在Flask模板中如何读取各种类型的变量。

4、登录页面login.html<!DOCTYPE html><html><head><metacharset="utf-8"/><title>Login</title><linkrel="stylesheet"type="text/css"href="static/css/index.css"/></head><body><divclass="header"><h1>Login</h1></div><divclass="container"><divclass="item"><formaction=""method="post"><inputtype="text"placeholder="please input username"name="username"/><

br/><inputtype="submit"value="Login"/></form></div></div></body></html>

结合blog.py主要展示表单如何提交取值,cookie和session应用。

5、注册页面regist.html<!DOCTYPE html><html><head><metacharset="utf-8"/><title>Regist</title><linkrel="stylesheet"type="text/css"href="static/css/index.css"/></head><body><divclass="header"><h1>Regist</h1></div><divclass="container"><divclass="item"><formaction=""method="post"><inputtype="text"placeholder="please input username"name="username"/><

br/><inputtype="submit"value="Regist"/></form></div></div></body></html>

结合blog.py主要展示了数据库操作。

6、上传页面upload.html<!DOCTYPE html><html><head><metacharset="utf-8"/><title>Upload</title><linkrel="stylesheet"type="text/css"href="static/css/index.css"/></head><body><divclass="header"><h1>Upload</h1></div><divclass="container"><divclass="item"><formaction=""method="post"enctype="multipart/form-data"><inputtype="text"name="username"/><

br/><inputtype="file"name="img"/><

br/><inputtype="submit"value="Upload"/></form></div></div></body></html>

结合blog.py主要展示了如何上传文件。

7、运行效果

三、参考资料1、Flask快速入门

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航