flask(webサーバ)—Python(4)
21935 ワード
flask(webサーバ)—Python(4)
小さな知識
pip list flaskポート5000
Flaskのルーティングと逆ルーティング(chromeのpostmanプラグインを推奨)
Flaskのテンプレート
小さな知識
pip list flaskポート5000
Flaskのルーティングと逆ルーティング(chromeのpostmanプラグインを推奨)
from flask import Flask,request,url_for
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World!'
@app.route('/user', methods=['POST']) # get , postman , post
def hello_user():
return 'hello user'
@app.route('/users/') # http://127.0.0.1:5000/users/2
def user_id(id):
return 'hello user:'+id
@app.route('/query_user') # http://127.0.0.1:5000/query_user?id=2
def query_user1():
id = request.args.get('id')
return 'query user:'+id
@app.route('/query_url') #
def query_url():
return 'query url:'+url_for('query_user1')
if __name__ == '__main__':
app.run()
Flaskのテンプレート
from flask import Flask, render_template
from models import User
app = Flask(__name__)
@app.route('/')
def hello_world():
content = "Hello world"
return render_template("index.html",content=content)
#
#
#
#
# </span>
<span class="hljs-comment"># </span>
<span class="hljs-comment"># </span>
<span class="hljs-comment"># <h1>{{ content }}</h1></span>
<span class="hljs-comment"># </span>
<span class="hljs-comment"># </span>
<span class="hljs-decorator">@app.route('/user')</span>
<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">user_index</span><span class="hljs-params">()</span>:</span>
user = User(<span class="hljs-number">1</span>, <span class="hljs-string">'jikexueyuan'</span>)
<span class="hljs-keyword">return</span> render_template(<span class="hljs-string">"user_index.html"</span>, user=user)
<span class="hljs-comment">#
<span class="hljs-comment"># </span>
<span class="hljs-comment"># </span>
<span class="hljs-comment"># <meta charset="UTF-8"/></span>
<span class="hljs-comment"># <title/></span>
<span class="hljs-comment"># </span>
<span class="hljs-comment"># </span>
<span class="hljs-comment"># <h1>hello {{ user.user_name }}</h1></span>
<span class="hljs-comment"># </span>
<span class="hljs-comment"># </span>
<span class="hljs-decorator">@app.route('/query_user/<user_id>') # </user_id></span>
<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">query_user</span><span class="hljs-params">(user_id)</span>:</span>
user = <span class="hljs-keyword">None</span>
<span class="hljs-keyword">if</span> int(user_id) == <span class="hljs-number">1</span>:
user = User(<span class="hljs-number">1</span>, <span class="hljs-string">'jikexueyuan'</span>)
<span class="hljs-keyword">return</span> render_template(<span class="hljs-string">"user_id.html"</span>,user=user)
<span class="hljs-comment">#
<span class="hljs-comment"># </span>
<span class="hljs-comment"># </span>
<span class="hljs-comment"># <meta charset="UTF-8"/></span>
<span class="hljs-comment"># <title/></span>
<span class="hljs-comment"># </span>
<span class="hljs-comment"># </span>
<span class="hljs-comment"># {% if user %}</span>
<span class="hljs-comment"># hello {{ user.user_name }}</span>
<span class="hljs-comment"># {% else %}</span>
<span class="hljs-comment"># no this user</span>
<span class="hljs-comment"># {% endif %}</span>
<span class="hljs-comment"># </span>
<span class="hljs-comment"># </span>
<span class="hljs-decorator">@app.route('/users') # </span>
<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">user_list</span><span class="hljs-params">()</span>:</span>
users = []
<span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> range(<span class="hljs-number">1</span>,<span class="hljs-number">11</span>):
user = User(i, <span class="hljs-string">'jikexueyuan'</span>+str(i))
users.append(user)
<span class="hljs-keyword">return</span> render_template(<span class="hljs-string">"user_list.html"</span>,users=users)
<span class="hljs-comment">#
<span class="hljs-comment"># </span>
<span class="hljs-comment"># </span>
<span class="hljs-comment"># <meta charset="UTF-8"/></span>
<span class="hljs-comment"># <title/></span>
<span class="hljs-comment"># </span>
<span class="hljs-comment"># </span>
<span class="hljs-comment"># {% for user in users %}</span>
<span class="hljs-comment"># {{ user.user_id }}--{{ user.user_name }}<br/></span>
<span class="hljs-comment"># {% endfor %}</span>
<span class="hljs-comment"># </span>
<span class="hljs-comment"># </span>
<span class="hljs-decorator">@app.route('/one') # </span>
<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">one_base</span><span class="hljs-params">()</span>:</span>
<span class="hljs-keyword">return</span> render_template(<span class="hljs-string">"one_base.html"</span>)
<span class="hljs-decorator">@app.route('/two')</span>
<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">two_base</span><span class="hljs-params">()</span>:</span>
<span class="hljs-keyword">return</span> render_template(<span class="hljs-string">"two_base.html"</span>)
<span class="hljs-comment">#
<span class="hljs-comment"># </span>
<span class="hljs-comment"># </span>
<span class="hljs-comment"># <meta charset="UTF-8"/></span>
<span class="hljs-comment"># <title/></span>
<span class="hljs-comment"># </span>
<span class="hljs-comment"># </span>
<span class="hljs-comment"># <div>
<span class="hljs-comment"># <h1>Header </h1></span>
<span class="hljs-comment"># </span></div></span>
<span class="hljs-comment"># {% block content %}</span>
<span class="hljs-comment"># {% endblock %}</span>
<span class="hljs-comment"># <div>
<span class="hljs-comment"># <h1>Footer jikexueyuan</h1></span>
<span class="hljs-comment"># </span></div></span>
<span class="hljs-comment"># </span>
<span class="hljs-comment"># </span>
<span class="hljs-comment"># one_base.html </span>
<span class="hljs-comment"># {% extends "base.html" %}</span>
<span class="hljs-comment"># {% block content %}</span>
<span class="hljs-comment"># <h2> </h2></span>
<span class="hljs-comment"># {% endblock %}</span>
<span class="hljs-comment"># two_base.html </span>
<span class="hljs-comment"># {% extends "base.html" %}</span>
<span class="hljs-comment"># {% block content %}</span>
<span class="hljs-comment"># <h2> </h2></span>
<span class="hljs-comment"># {% endblock %}</span>
<span class="hljs-comment"># if __name__ == '__main__':</span>
<span class="hljs-comment"># app.run()</span></span></span></span></span></span></code></pre>
<h2 id="flask bug">Flask ( bug)</h2>
<pre><code><span class="hljs-keyword">from</span> flask <span class="hljs-keyword">import</span> Flask, flash, render_template, request,abort
app = Flask(__name__)
app.secret_key = <span class="hljs-string">'123'</span>
<span class="hljs-decorator">@app.route('/')</span>
<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">hello_world</span><span class="hljs-params">()</span>:</span>
flash(<span class="hljs-string">"hello jikexueyuan"</span>)
<span class="hljs-keyword">return</span> render_template(<span class="hljs-string">"index.html"</span>)
<span class="hljs-decorator">@app.route('/login', methods=['POST'])</span>
<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">login</span><span class="hljs-params">()</span>:</span>
form = request.form
username = form.get(<span class="hljs-string">'username'</span>)
password = form.get(<span class="hljs-string">'password'</span>)
<span class="hljs-keyword">if</span> <span class="hljs-keyword">not</span> username:
flash(<span class="hljs-string">"please input username"</span>)
<span class="hljs-keyword">return</span> render_template(<span class="hljs-string">"index.html"</span>)
<span class="hljs-keyword">if</span> <span class="hljs-keyword">not</span> password:
flash(<span class="hljs-string">"please input password"</span>)
<span class="hljs-keyword">return</span> render_template(<span class="hljs-string">"index.html"</span>)
<span class="hljs-keyword">if</span> username == <span class="hljs-string">'jikexueyuan'</span> <span class="hljs-keyword">and</span> password == <span class="hljs-string">'123456'</span>:
flash(<span class="hljs-string">"login success"</span>)
<span class="hljs-keyword">return</span> render_template(<span class="hljs-string">"index.html"</span>)
<span class="hljs-keyword">else</span>:
flash(<span class="hljs-string">"username or password is wrong"</span>)
<span class="hljs-keyword">return</span> render_template(<span class="hljs-string">"index.html"</span>)
<span class="hljs-decorator">@app.errorhandler(404)</span>
<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">not_found</span><span class="hljs-params">(e)</span>:</span>
<span class="hljs-keyword">return</span> render_template(<span class="hljs-string">"404.html"</span>)
<span class="hljs-decorator">@app.route('/users/<user_id>')</user_id></span>
<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">users</span><span class="hljs-params">(user_id)</span>:</span>
<span class="hljs-keyword">if</span> int(user_id) == <span class="hljs-number">1</span>:
<span class="hljs-keyword">return</span> render_template(<span class="hljs-string">"user.html"</span>)
<span class="hljs-keyword">else</span>:
abort(<span class="hljs-number">404</span>)
<span class="hljs-keyword">if</span> __name__ == <span class="hljs-string">'__main__'</span>:
app.run()</code></pre>
<p>index.html :</p>
<pre><code><span class="xml"><span class="hljs-doctype">
<span class="hljs-tag"><<span class="hljs-title">html</span>></span>
<span class="hljs-tag"><<span class="hljs-title">head</span> <span class="hljs-attribute">lang</span>=<span class="hljs-value">"en"</span>></span>
<span class="hljs-tag"><<span class="hljs-title">meta</span> <span class="hljs-attribute">charset</span>=<span class="hljs-value">"UTF-8"</span>></span>
<span class="hljs-tag"><<span class="hljs-title">title</span>></span><span class="hljs-tag"><span class="hljs-title">title</span>></span>
<span class="hljs-tag"><span class="hljs-title">head</span>></span>
<span class="hljs-tag"><<span class="hljs-title">body</span>></span>
<span class="hljs-tag"><<span class="hljs-title">h1</span>></span>Hello Login<span class="hljs-tag"><span class="hljs-title">h1</span>></span>
<span class="hljs-tag"><<span class="hljs-title">form</span> <span class="hljs-attribute">action</span>=<span class="hljs-value">"/login"</span> <span class="hljs-attribute">method</span>=<span class="hljs-value">"post"</span>></span>
<span class="hljs-tag"><<span class="hljs-title">input</span> <span class="hljs-attribute">type</span>=<span class="hljs-value">"text"</span> <span class="hljs-attribute">name</span>=<span class="hljs-value">"username"</span>></span>
<span class="hljs-tag"><<span class="hljs-title">input</span> <span class="hljs-attribute">type</span>=<span class="hljs-value">"password"</span> <span class="hljs-attribute">name</span>=<span class="hljs-value">"password"</span>></span>
<span class="hljs-tag"><<span class="hljs-title">input</span> <span class="hljs-attribute">type</span>=<span class="hljs-value">"submit"</span> <span class="hljs-attribute">value</span>=<span class="hljs-value">"Submit"</span>></span>
<span class="hljs-tag"><span class="hljs-title">form</span>></span>
<span class="hljs-tag"><<span class="hljs-title">h2</span>></span></span><span class="hljs-expression">{{ <span class="hljs-variable">get</span>_<span class="hljs-variable">flashed</span>_<span class="hljs-variable">messages</span>()[0] }}</span><span class="xml"><span class="hljs-tag"><span class="hljs-title">h2</span>></span>
<span class="hljs-tag"><span class="hljs-title">body</span>></span>
<span class="hljs-tag"><span class="hljs-title">html</span>></span></span></span></code></pre>
<p>404.html :</p>
<pre><code><span class="hljs-doctype">
<span class="hljs-tag"><<span class="hljs-title">html</span>></span>
<span class="hljs-tag"><<span class="hljs-title">head</span> <span class="hljs-attribute">lang</span>=<span class="hljs-value">"en"</span>></span>
<span class="hljs-tag"><<span class="hljs-title">meta</span> <span class="hljs-attribute">charset</span>=<span class="hljs-value">"UTF-8"</span>></span>
<span class="hljs-tag"><<span class="hljs-title">title</span>></span><span class="hljs-tag"><span class="hljs-title">title</span>></span>
<span class="hljs-tag"><span class="hljs-title">head</span>></span>
<span class="hljs-tag"><<span class="hljs-title">body</span>></span>
<span class="hljs-tag"><<span class="hljs-title">h1</span>></span> <span class="hljs-tag"><span class="hljs-title">h1</span>></span>
<span class="hljs-tag"><<span class="hljs-title">h2</span>></span> ! <span class="hljs-tag"><span class="hljs-title">h2</span>></span>
<span class="hljs-tag"><span class="hljs-title">body</span>></span>
<span class="hljs-tag"><span class="hljs-title">html</span>></span></span></code></pre>
</div>
</div>
</div>
</div>