flask(webサーバ)—Python(4)

21935 ワード

flask(webサーバ)—Python(4)
小さな知識
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>