Introduction of Flask
Flask is a Python-implemented WEB development micro-framework. Official website: http://flask.pocoo.org/
Second, Demo
1, Code structure
Copy Code code as follows:
.
├──blog.py
├──static
│├──css
││└──index.css
│├──images
││├──cat.jpg
││└──sheying1229.jpg
│└──js
└──templates
├──index.html
├──login.html
├──regist.html
└──upload.html
5 directories, 8 files
2, the main program blog.py
Copy Code code as follows:
#!/usr/bin/python
#coding: UTF8
From flask import flask, render_template, url_for, request,redirect,make_response,session
Import Os,mysqldb
App = Flask (__name__)
app.secret_key= ' AFJLSJFOWFLAJFLKAJFKJFKALJF '
User_list = [' Jim ', ' Max ', ' py ']
ImagePath = Os.path.join (OS.GETCWD (), "Static/images")
@app. Route ('/')
def index ():
Username = request.cookies.get (' username ')
If not username:
Username = U ' Please login first '
IsLogin = Session.get (' IsLogin ')
Nav_list = [u ' homepage ', u ' economy ', u ' culture ', U ' technology ', U ' entertainment ']
Blog = {' title ': ' Welcome to my blog ', ' content ': ' Hello, Welcome to my blog. '}
Blogtag = {' JavaScript ': ten, "Python": "Shell": 5}
img = url_for (' Static ', filename= "images/cat.jpg")
Return render_template (' index.html ', nav_list=nav_list, username=username, blog = blog, Blogtag = Blogtag, img=img, Islog In=islogin)
@app. Route ('/reg ', methods=[' get ', ' POST '])
def regist ():
if Request.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 ']
Return render_template (' regist.html ')
@app. Route ('/upload ', methods=[' get ', ' POST '])
def upload ():
if Request.method = = ' POST ':
Username = request.form[' username ']
FILE = Request.files[' img ']
filename = File.filename
File.save (Os.path.join (imagepath,filename))
Return "Else
Return render_template (' upload.html ')
@app. Route ('/login/', methods=[' get ', ' POST '])
def login ():
if Request.method = = ' POST ':
Username = request.form.get (' username ')
If username in user_list:
Response = Make_response (redirect ('/'))
Response.set_cookie (' username ', value=username, max_age=300)
session[' islogin '] = ' 1 '
return response
Else
session[' islogin '] = ' 0 '
Return redirect ('/login/')
Else
Return render_template (' login.html ')
if __name__ = = ' __main__ ':
App.run (debug=true,host= ' 0.0.0.0 ', port=5000)
Main home, registration, login, upload page.
Blog.py mainly shows the common functional usage in flask: routing, database operation, Cookie,session,redirect, form, file uploading, debugging, IP and port of Web server, static file reading, etc.
3, homepage template index.html
Copy Code code as follows:
<! DOCTYPE html>
<meta charset= "Utf-8"/>
<title>flask demo</title>
<link rel= "stylesheet" type= "Text/css" href= "Static/css/index.css"/>
<body>
<div class= "Header" >
{%if IsLogin = = ' 1 '%}
{%else%}
{%endif%}
<div class= "NAV" >
<ul>
{%for nav in nav_list%}
<li><a href= ' {nav}} ' >{{nav}}</a></li>
{%endfor%}
</ul>
</div>
</div>
<div class= "Container" >
<div class= "Item" >
<div class= "Content" >
<p>{{blog[' content ']}}</p>
</div>
</div>
<div class= "Side" >
<ul>
{%for key,value in Blogtag.items ()%}
<li>{{key}} ({{value}}) </li>
{%endfor%}
</ul>
</div>
</div>
</body>
This template mainly shows how to read variables of various types in the flask template.
4, login page login.html
Copy Code code as follows:
<! DOCTYPE html>
<meta charset= "Utf-8"/>
<title>Login</title>
<link rel= "stylesheet" type= "Text/css" href= "Static/css/index.css"/>
<body>
<div class= "Header" >
</div>
<div class= "Container" >
<div class= "Item" >
<form action= "" method= "POST" >
<input type= "text" placeholder= "Please input username" name= "username"/><br/>
<input type= "Submit" value= "Login"/>
</form>
</div>
</div>
</body>
Combining blog.py mainly shows how the form submits values, cookies and session applications.
5, registration page regist.html
Copy Code code as follows:
<! DOCTYPE html>
<meta charset= "Utf-8"/>
<title>Regist</title>
<link rel= "stylesheet" type= "Text/css" href= "Static/css/index.css"/>
<body>
<div class= "Header" >
</div>
<div class= "Container" >
<div class= "Item" >
<form action= "" method= "POST" >
<input type= "text" placeholder= "Please input username" name= "username"/><br/>
<input type= "Submit" value= "Regist"/>
</form>
</div>
</div>
</body>
The combination of blog.py mainly shows the database operation.
6, upload page upload.html
Copy Code code as follows:
<! DOCTYPE html>
<meta charset= "Utf-8"/>
<title>Upload</title>
<link rel= "stylesheet" type= "Text/css" href= "Static/css/index.css"/>
<body>
<div class= "Header" >
</div>
<div class= "Container" >
<div class= "Item" >
<form action= "" method= "Post" enctype= "Multipart/form-data" >
<input type= "text" name= "username"/><br/>
<input type= "file" Name= "img"/><br/>
<input type= "Submit" value= "Upload"/>
</form>
</div>
</div>
</body>
Combined blog.py mainly shows how to upload files.
7. Operation Effect