40 lines
11 KiB
HTML
40 lines
11 KiB
HTML
<!DOCTYPE html><html lang="zh-CN"><head><meta charset="utf-8"><meta name="X-UA-Compatible" content="IE=edge"><title> MarkDown</title><meta name="description" content="A Blog Powered By Hexo"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="short icon" href="/favicon.png"><link rel="stylesheet" href="/css/apollo.css"><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,600" type="text/css"><meta name="generator" content="Hexo 6.0.0"><link rel="alternate" href="/atom.xml" title="MarkDown" type="application/atom+xml">
|
||
</head><body><header><a href="/" class="logo-link"><img src="/logo.png"></a><ul class="nav nav-list"><li class="nav-list-item"><a href="/" target="_self" class="nav-list-link active">ALL</a></li><li class="nav-list-item"><a href="/categories/leetcode/" target="_self" class="nav-list-link">LEETCODE</a></li><li class="nav-list-item"><a href="/atom.xml" target="_self" class="nav-list-link">RSS</a></li></ul></header><section class="container"><ul class="home post-list"><li class="post-list-item"><article class="post-block"><h2 class="post-title"><a href="/2016/02/15/Flask-Day-1/" class="post-title-link">Flask Day 1</a></h2><div class="post-meta"><div class="post-time">2016年2月15日</div></div><div class="post-content"><h3 id="“Hello-World”-in-Flask"><a href="#“Hello-World”-in-Flask" class="headerlink" title="“Hello World” in Flask"></a>“Hello World” in Flask</h3><p>Create a folder named <code>microblog</code> (or whatever you want). Then cd into that folder and run following prompt in terminal:</p>
|
||
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ python3 -m venv flask</span><br></pre></td></tr></table></figure>
|
||
|
||
<p>Now you’ll have a folder named <code>flask</code> inside <code>microblog</code>, containing a private version of Python interpreter.</p>
|
||
<p>And you should install <strong>flask</strong> and extensions by the commands below:</p>
|
||
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line">$ flask/bin/pip install flask</span><br><span class="line">$ flask/bin/pip install flask-login</span><br><span class="line">$ flask/bin/pip install flask-openid</span><br><span class="line">$ flask/bin/pip install flask-mail</span><br><span class="line">$ flask/bin/pip install flask-sqlalchemy</span><br><span class="line">$ flask/bin/pip install sqlalchemy-migrate</span><br><span class="line">$ flask/bin/pip install flask-whooshalchemy</span><br><span class="line">$ flask/bin/pip install flask-wtf</span><br><span class="line">$ flask/bin/pip install flask-babel</span><br><span class="line">$ flask/bin/pip install guess_language</span><br><span class="line">$ flask/bin/pip install flipflop</span><br><span class="line">$ flask/bin/pip install coverage</span><br></pre></td></tr></table></figure>
|
||
|
||
<p>After that, let’s create the basic structure for our application: <code>app</code> <code>app/static</code> <code>app/templates</code> <code>tmp</code>.</p>
|
||
<ol>
|
||
<li><code>app</code> — where the application package is</li>
|
||
<li><code>static</code> — stores static files like images, javascripts, and css.</li>
|
||
<li><code>templates</code> — where templates will go.</li>
|
||
</ol>
|
||
<p>Then you can start with <code>__init__.py</code> which should put into app folder (file <code>app/__init__.py</code>):</p>
|
||
<figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">from</span> flask <span class="keyword">import</span> Flask</span><br><span class="line"></span><br><span class="line">app = Flask(__name__)</span><br><span class="line"><span class="keyword">from</span> app <span class="keyword">import</span> views</span><br></pre></td></tr></table></figure>
|
||
|
||
<p>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.</p>
|
||
<p>Let’s see what a views function looks like (file <code>app/views.py</code>):</p>
|
||
<figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">from</span> flask <span class="keyword">import</span> Flask</span><br><span class="line"></span><br><span class="line">app = Flask(__name__)</span><br><span class="line"><span class="keyword">from</span> app <span class="keyword">import</span> views</span><br></pre></td></tr></table></figure>
|
||
|
||
<p>Finally we should create a script to starts up the web server with our application(file <code>run.py</code>):</p>
|
||
<figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">#!flask/bin/python</span></span><br><span class="line"><span class="keyword">from</span> app <span class="keyword">import</span> app</span><br><span class="line">app.run(debug=<span class="literal">True</span>)</span><br></pre></td></tr></table></figure>
|
||
|
||
<p>To indicating that is an executable file you need to run this in terminal:</p>
|
||
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ chmod a+x run.py</span><br></pre></td></tr></table></figure>
|
||
|
||
<p>Now the file structure should look like:</p>
|
||
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line">microblog\</span><br><span class="line"> flask\</span><br><span class="line"> <virtual environment files></span><br><span class="line"> app\</span><br><span class="line"> static\</span><br><span class="line"> templates\</span><br><span class="line"> __init__.py</span><br><span class="line"> views.py</span><br><span class="line"> tmp\</span><br><span class="line"> run.py</span><br></pre></td></tr></table></figure>
|
||
|
||
<p>Then start to write the template (file <code>app/templates/index.html</code>):</p>
|
||
<figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag"><<span class="name">html</span>></span></span><br><span class="line"> </span><br><span class="line"> <span class="tag"><<span class="name">head</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">title</span>></span>{{ title }} - microblog<span class="tag"></<span class="name">title</span>></span></span><br><span class="line"> <span class="tag"></<span class="name">head</span>></span></span><br><span class="line"> </span><br><span class="line"> <span class="tag"><<span class="name">body</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">h1</span>></span>Hello, {{ user.nickname }}!<span class="tag"></<span class="name">h1</span>></span></span><br><span class="line"> <span class="tag"></<span class="name">body</span>></span></span><br><span class="line"> </span><br><span class="line"><span class="tag"></<span class="name">html</span>></span></span><br></pre></td></tr></table></figure>
|
||
|
||
<p>Now let’s write the view function that uses this template (file <code>app/views.py</code>):</p>
|
||
<figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">from</span> flask <span class="keyword">import</span> render_template</span><br><span class="line"><span class="keyword">from</span> app <span class="keyword">import</span> app</span><br><span class="line"></span><br><span class="line"><span class="meta">@app.route(<span class="params"><span class="string">'/'</span></span>)</span></span><br><span class="line"><span class="meta">@app.route(<span class="params"><span class="string">'/index'</span></span>)</span></span><br><span class="line"><span class="function"><span class="keyword">def</span> <span class="title">index</span>():</span></span><br><span class="line"> user = {<span class="string">'nickname'</span>: <span class="string">'ching'</span>} <span class="comment"># fake user</span></span><br><span class="line"> <span class="keyword">return</span> render_template(<span class="string">'index.html'</span>,</span><br><span class="line"> title=<span class="string">'Home'</span>,</span><br><span class="line"> user=user)</span><br></pre></td></tr></table></figure>
|
||
|
||
<p><code>render_template</code> function is what we import from Flask framework to render the template. It uses <a target="_blank" rel="noopener" href="http://jinja.pocoo.org/">Jinja2</a> templating engine.</p>
|
||
</div></article></li><li class="post-list-item"><article class="post-block"><h2 class="post-title"><a href="/2016/02/12/first-post/" class="post-title-link">First Post</a></h2><div class="post-meta"><div class="post-time">2016年2月12日</div></div><div class="post-content"><p>This is the very first post I wrote,</p>
|
||
<p>with <a target="_blank" rel="noopener" href="https://www.typora.io/">Typora</a> & <a target="_blank" rel="noopener" href="https://hexo.io/">Hexo</a>.</p>
|
||
</div></article></li></ul></section><footer><div class="paginator"><a href="/page/3/" class="prev">PRVE</a></div></footer><script src="https://cdn.bootcss.com/mathjax/2.5.3/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script></body></html> |