hugo-blog/content/posts/Flask-Day-1.md
Ching 5ba7024532 feat(content; layouts; static): migrate hexo blog. add new theme fuji.
migrate hexo blog. add new theme fuji.

Signed-off-by: Ching <loooching@gmail.com>
2022-02-07 23:38:40 +08:00

123 lines
2.8 KiB
Markdown

---
title: Flask Day 1
date: 2016-02-15 01:23:33
tags:
- flask
---
### "Hello World" in Flask
Create a folder named `microblog` (or whatever you want). Then cd into that folder and run following prompt in terminal:
``` bash
$ python3 -m venv flask
```
Now you'll have a folder named `flask` inside `microblog`, containing a private version of Python interpreter.
And you should install **flask** and extensions by the commands below:
``` bash
$ flask/bin/pip install flask
$ flask/bin/pip install flask-login
$ flask/bin/pip install flask-openid
$ flask/bin/pip install flask-mail
$ flask/bin/pip install flask-sqlalchemy
$ flask/bin/pip install sqlalchemy-migrate
$ flask/bin/pip install flask-whooshalchemy
$ flask/bin/pip install flask-wtf
$ flask/bin/pip install flask-babel
$ flask/bin/pip install guess_language
$ flask/bin/pip install flipflop
$ flask/bin/pip install coverage
```
After that, let's create the basic structure for our application: `app` `app/static` `app/templates` `tmp`.
1. `app` — where the application package is
2. `static` — stores static files like images, javascripts, and css.
3. `templates` — where templates will go.
Then you can start with ``__init__.py`` which should put into app folder (file `app/__init__.py`):
``` python
from flask import Flask
app = Flask(__name__)
from app import views
```
The views are the handlers that response to requests from web browsers or other clients. Each view function is mapped to one or more request URLs.
Let's see what a views function looks like (file `app/views.py`):
``` python
from flask import Flask
app = Flask(__name__)
from app import views
```
Finally we should create a script to starts up the web server with our application(file `run.py`):
``` python
#!flask/bin/python
from app import app
app.run(debug=True)
```
To indicating that is an executable file you need to run this in terminal:
``` bash
$ chmod a+x run.py
```
Now the file structure should look like:
```
microblog\
flask\
<virtual environment files>
app\
static\
templates\
__init__.py
views.py
tmp\
run.py
```
Then start to write the template (file `app/templates/index.html`):
``` html
<html>
<head>
<title>{{ title }} - microblog</title>
</head>
<body>
<h1>Hello, {{ user.nickname }}!</h1>
</body>
</html>
```
Now let's write the view function that uses this template (file `app/views.py`):
``` python
from flask import render_template
from app import app
@app.route('/')
@app.route('/index')
def index():
user = {'nickname': 'ching'} # fake user
return render_template('index.html',
title='Home',
user=user)
```
`render_template` function is what we import from Flask framework to render the template. It uses [Jinja2](http://jinja.pocoo.org/) templating engine.