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


Flask從入門到放棄1:

Flask中的路由app.route():

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

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

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

比如:

app = Flask(__name__)

@app.route("/")

def hello():

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的字樣


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM