Flask從入門到放棄1:路由app.route()

Flask從入門到放棄1:css

Flask中的路由app.route():html

參考來源:http://python.jobbole.com/80956/python

   https://www.raspberrypi.org/learning/python-web-server-with-flask/worksheet/web

Flask是基於Werkzeug,Python WSGI實用程序庫和Jinja2(Python的模板引擎)的微型框架。flask

好比:app

app = Flask(__name__)框架

@app.route("/")函數

def hello():post

return "Hello World!"網站

 

要理解它,先了解一下裝飾器:

舉個例子:

# This is our decorator

def simple_decorator(f):

# This is the new function we're going to return

# This function will be used in place of our original definition

def wrapper():

  print "Entering Function"

  f()

  print "Exited Function"

return wrapper

@simple_decorator

def hello():

print "Hello World"

hello()

運行上述代碼會輸出如下結果:

Entering Function
Hello World
Exited Function

上面是不接受傳參的裝飾器例子,下面演示一下傳參的:

def decorator_factory(enter_message, exit_message):

# We're going to return this decorator

def simple_decorator(f):

   def wrapper():

     print enter_message

     f()

     print exit_message

    return wrapper

return simple_decorator

@decorator_factory("Start", "End")

def hello():

print "Hello World"

hello()

給咱們的輸出是:

Start
Hello World
End

從新看一下前面的函數

@app.route("/"):

表示傳遞一個網站,「/」是網站的主目錄,也就是http://127.0.0.1:5000/

假如把"/"改爲:'/simon',那麼就在網頁上輸入http://127.0.0.1:5000/simon

形參的規則能夠用指定的轉換器,好比下面的例子:

@app.route('/post/<int:post_id>')
def show_post(post_id):# show the post with the given id, the id is an integer
   return 'Post %d' % post_id

轉換器有下面幾種:

int:
接受整數

float:
int ,可是接受浮點數

path:
和默認的類似,但也接受斜線

def hello():

這個是傳輸給route的函數,裏面返回值「Hello World!」就是顯示到網頁上的內容

假如須要顯示html文件:

編寫一個html文件,命名爲index.html,好比:

<html>

<body>

<h2>Hello World</h2>

</body>

</html>

而後將return返回改爲:

return render_template('index.html')

固然,在這以前要先導入 render_template模塊

假如要導入CSS樣式,編輯CSS文件,好比style.css:

body {
background: red;color: yellow;
}

上述的html也作改動:

<html>

<head>

<link rel="stylesheet" href='/static/style.css' />

</head>

<body>

<h2>Hello World</h2>

</body>

</html>

整個項目的結構以下:

├── app.py ├── static │   └── style.css └── templates └── index.html

咱們還能夠把導入模板,Flask使用jinja模板

@app.route('/hello/<name>')

    def hello(name):

return render_template('page.html', name=name)

最後的return返回一個叫page.html的文件並傳遞形參name,name正是在URL的一部分數據

新建一個文件叫page.html

<h1>Hello {{ name }}!</h1>

這裏咱們忽略html的其餘結構

網址輸入:http://127.0.0.1:5000/hello/paul

咱們就能夠看到Hello paul的字樣

相關文章
相關標籤/搜索