創作內容

3 GP

使用Python、Flask和Netlify創建簡單的靜態網站

作者:Jia│2020-01-24 21:44:34│巴幣:6│人氣:1677
一般「純寫HTML部署到Netlify網路上搜尋可以找到許多介紹、教學文章,那如果其中有很多網頁都有一樣的版型,可以選擇使用模板引擎,免除在每個頁面都要複製貼上一樣的內容,方便修改、維護。
所以今天這邊會介紹使用Flask(預設Jinja2模板引擎)來在Netlify上創建簡單的靜態網站。


創建Project
我把專案名稱取作testweb,新增資料夾、安裝相關套件:
$ mkdir testweb
$ pip install Flask Frozen-Flask
* 推薦可以使用Python虛擬環境,如Pipenv

添加模板
我們先新增一個存放HTML的資料夾(templates)。
在裡面新增一個基本的佈局templates/base.html:
<!DOCTYPE html>
<html lang="zh-Hant-TW">
  <head>
    <title>
        {% block title %}{% endblock %} | 測試網頁
    </title>
  </head>

  <body>
    <div>
        <h1>測試網頁</h1>
        <div>
            {% block main %}{% endblock %}
        </div>
    </div>
    
  </body>
</html>

再來創建templates/home.html、templates/about.html當範例:
{% extends "base.html" %}

{% block title %}Home{% endblock %}

{% block main %}
  <p>使用Netlify架靜態網站。</p>
{% endblock %}

{% extends "base.html" %}

{% block title %}About{% endblock %}

{% block main %}
  <p>這是一個範例網站。</p>
{% endblock %}

撰寫app.py (有包含Frozen-Flask生成靜態網頁的部分):
# -*- coding: utf-8 -*-
import sys
from flask import Flask, render_template
from flask_frozen import Freezer


app = Flask(__name__)
freezer = Freezer(app)


@app.route("/")
def home():
    return render_template('home.html')

@app.route("/about.html")
def about():
    return render_template('about.html')


if __name__ == '__main__':
    if len(sys.argv) > 1 and sys.argv[1] == "build":
        print("Building website...")
        freezer.freeze()
    else:
        app.run(debug=True)

文件結構:

測試網站是否能正常運作:
$ python app.py

開啟瀏覽器http://127.0.0.1:5000/


測試凍結成靜態文件
因為在Netlify上只提供部署靜態網頁,因此要用Frozen-Flask將Flask應用凍結成靜態文件:
$ python app.py build

文件結構:

成功產生build資料夾,確認沒有問題後即可將build資料夾刪除,因為我們要讓Netlify幫我們自動建構。

部署到Netlify
*我這邊是使用Git部署,它好像也可以直接把檔案上傳部署,但我沒嘗試過。
在git之前需要準備requirements.txt,讓Netlify知道我們有使用那些套件:
$ pip freeze > requirements.txt

文件結構:

目前它提供連結Git的網站有GitHub、GitLab、Bitbucket。
我這邊是選擇我原本就有的GitHub,可以設定私人,不一定要公開。

創建好後將你的專案Push上去。
接下來請到Netlify註冊個帳號,點擊"New site from Git",選擇你剛剛Git的網站。
*這邊第一次會需要一些權限的確認

選擇你的repository(儲存庫)。

這邊是要讓我們Git上來後,Netlify自動幫我們Build凍結成靜態文件的設定。完成後點擊Deploy site。
Build command:python app.py build
Publish directory:build
*如果你的網案原本就是純靜態HTML的話,這部分可以略過。
*如果這邊沒有設定到,之後也可以到專案內的Settings > Build & deploy > Build settings新增修改。
*而你如果是用其他像是Hugo、Hexo,相關設定可以參考官方教學

在Deploys頁面能看到它正在Building。

完成後會顯示Published,也代表目前部署的是這個版本。

成功了!!
那我該怎麼看我的網站呢?點擊上方https://sharp-nightingale-15794a.netlify.com這串URL即可連結過去觀看。


其它設定與問題
那串URL好醜、記不起來,沒關係,可以到Settings > General > Site information > Change site name 更改自己喜歡的,不過當然也要別人沒使用過的才行。

從Deploy選擇git版本能查看執行的Log紀錄,如果有發生錯誤,可以先來這邊看看錯誤訊息。
如果使用pipenv創建,不能將"Pipfile"、"Pipfile.lock"也git上去,會造成錯誤(這部分我還不確定原因),可以使用.gitignore將其剔除。

當網址錯誤Netlify會有預設的404頁面,如果想換成自己的,只需加入404.html即可。


Netlify還有許多其他功能、設定可以自己去摸索
如以上有任何錯誤或問題,歡迎底下留言~


引用網址:https://home.gamer.com.tw/TrackBack.php?sn=4663482
All rights reserved. 版權所有,保留一切權利

相關創作

同標籤作品搜尋:Netlify|Flask|Python|部署|靜態網站

留言共 0 篇留言

我要留言提醒:您尚未登入,請先登入再留言

3喜歡★g919233 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:老高與小茉影片關聯圖... 後一篇:網頁節點定位整理(CSS...

追蹤私訊切換新版閱覽

作品資料夾

happy545晚上好~
最近一直嘗試跟家人溝通,可惜今天也失敗了XD看更多我要大聲說昨天19:50


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】