[精讚] [會員登入]
239

【Python3】[Django] (Windows / Liunx) 如何從零開始創建一個網站

除了最基本的運作以外,還小小的加上了如何自導向特定目錄。

分享此文連結 //n.sfs.tw/15502

分享連結 【Python3】[Django] (Windows / Liunx) 如何從零開始創建一個網站@小編過路君子
(文章歡迎轉載,務必尊重版權註明連結來源)
2021-11-25 01:22:21 最後編修
2021-11-24 14:27:25 By 過路君子
 

大家好,這裡是最近發布筆記特別多的小編過路君子

因為同時在進行的東西太多了,不寫下來怕又要花好幾個小時研究、查詢

 

 

關於參考的資料小編丟在最下面的後記裡面了,有興趣的可以自行前往頁面查看。

對於其設定小編都有做略微的改動融合,但是主幹大致上相同,可以相互對照學習。

因為 WIndows和 Linux的運行環境差異,所以如果指令有分歧會明確標出,如果沒有標示,則指令相同

 

首先當然是要先下載 Django這個套件啦。

 

簡單的下道指令來安裝吧。

順帶一提,Windows部分全程都只會用 PowerShell來運行,以方便跟 Linux做對照,小編先在這裡跟不熟悉 DOS環境的人說一聲不好意思。

Linux pip install Django
Windows python -m pip install Django

(所有圖片點擊都可以放大、變高清)

 

然後簡單的創建一個新的資料夾來放置我們所有網頁工程的文件,創建之後順便切換進去吧。

Linux mkdir webpage && cd ./webpage
Windows md webpage
    cd .\webpage\

 

接下來這一個步驟對 Windows使用者極度不友善,但是沒辦法,如果你是使用 Windows的話,記得先找到 django-admin.py這個檔案在哪裡,下面的指令會用到。

如果各位安裝 Python3的時候沒有調整任何的設定,那這個檔案預設位置在 C:\Users\<user>\AppData\Local\Programs\Python\Python310\Lib\site-packages\django\bin這個資料夾裡面。

如果各位裝的 Python版本為 3.9,資料夾就叫 Python39;3.8就是 Python38......以此類推,對了,紅色的<user>部分記得更改。

指令最後的 ./(或.\) 別漏掉了,漏掉的話就會多一層資料夾,這不是我們想要的結果。

Linux django-admin startproject config ./
Windows C:\Users\<user>\AppData\Local\Programs\Python\Python310\Lib\site-packages\django\bin\django-admin.py startproject config .\

 

原本我們的資料夾是空的,現在則多了一個資料夾和一個 Python檔案,這兩個都是非常重要的,我們等等要對他們動刀。

那在我們開始動刀前,我們還要先創建一個資料夾,而這個資料夾就是用來控管我們等等的網頁。

Linux python3 manage.py startapp pages
Windows python manage.py startapp pages

 

那麼我們一切的準備就此結束,接下來就是修改文件、網頁配置的部分了。

這部份兩個系統的操作都一樣,小編接下來截圖以 Linux為主,Windows...打開文字編輯軟體就好了。

首先,打開位於 config這個資料夾裡面的 settings.py,如下圖那樣添加 'pages' 訊息,這部分無添加的話,啟動時會無法抓到我們新增的 pages資料夾。

 

接著一樣打開位於 config這個資料夾裡面的 urls.py,在開頭添加下面兩行。

from django.urls import path, include
from django.views.generic import RedirectView

開頭添加完之後,現在我們要在 urlpatterns這個陣列裡面添加以下兩行:

    path('', include('pages.urls')),
    path('', RedirectView.as_view(url='/index/'))

 

好了,config資料夾的設置就此結束,接下來我們要開始設置 pages資料夾了。

那在開始前我們必須在 pages資料夾裡面新增一個 urls.py檔案,這樣等等才能正確導向我們的首頁。

Windows在打指令的時候連續按兩次空格就可以了。

Linux touch pages/urls.py
Windows echo > pages\urls.py

 

因為剛剛創建出來的嘛,一定是一個空文件,所以我們把底下的內容全部貼進去。

# pages/urls.py

from django.urls import path


from .views import HomePageView

urlpatterns = [
    path('index/', HomePageView.as_view(), name='index'),
]

 

貼好之後儲存離開,接下來打開 pages/view.py,正常來說,應該只會看到兩行字,而我們只要將下面的文字直接貼入到文件的最底下就好:

from django.views.generic import TemplateView

class HomePageView(TemplateView):
    template_name = 'index.html'

 

然後在 pages資料夾下面再創建一個名為 templates的資料夾,同時將我們的首頁 index.html給創建出來。

Linux mkdir pages/templates && touch pages/templates/index.html
Windows md pages\templates
    echo > pages\templates\index.html

 

接著打開我們剛剛創建的 index.html檔案,將底下的文字全部貼進去就可以了。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Index</title>
</head>

<body>
    <h1>Hello World!</h1>
</body>
</html>

 

至此,我們的準備工作就此結束,接下來就只剩下收尾的工作了,最後兩個指令了!各位撐住!

Linux python3 manage.py migrate
Windows python manage.py migrate

 

最後一行,也就是萬眾期待的啟動我們的網頁服務啦!要啟動也非常簡單,只要輸入以下的指令:

Linux python3 manage.py runserver
Windows python manage.py runserver

 

然後打開我們瀏覽器,輸入 http://127.0.0.1:8000/ 或是直接點擊右邊的連結就可以連線進去並看到我們的網頁囉!

有沒有發現我們的首頁是在index/下,沒錯,在我們剛剛的設置中就有順便將首頁自動導向 index資料夾裡面,否則使用者連線進來只能看到一團亂碼,要「手動」在網址後面添加index/才能看到我們的網頁

這樣是不是很不人性化?所以我們簡化了這個流程,讓程式自動跳轉,免去使用者手動跳轉的時間。

那接下來各位就可以打開剛剛我們創建的 index.html開始添加一些有的沒的了,專屬於各位自己的網站就此誕生!

 

 

附錄

一個好用的小功能方便架設對外網站

如何綁定 Public IP 和 Port

首先,我們打開 config/setting.py,找到 ALLOWED_HOSTS這一個陣列,將要綁定的 IP填寫進去,這邊以 8.8.8.8來做示範,順手將上方的 DEBUG改成 False吧。

如果 DEBUG未改成 False會方便其他人找到我們網站的漏洞並進行攻擊,所以如果網站要對外公開一定要將這行改成 False。

然後用一樣方法啟動我們的網頁伺服器,但是這一次後面要再多一個 IP:Port的參數喔!

Linux python3 manage.py runserver 8.8.8.8:8000
Windows python manage.py runserver 8.8.8.8:8000

想當然爾,小編是沒有辦法成功啟動 Django來聆聽這個 Port啦,所以就沒辦法截圖示範了,總之,就是輸入你設定的那個網址和端口來進行連線。

 

 

 

後記

小編目前在研究一些怪怪的東西,也不知道這個套件能不能幫上小編的忙,總之花了時間下去研究了一下,就記錄一下基本的啟動方式,這樣以後回頭的時候就輕鬆了。

小編這篇文章參考了以下兩個網站,算是把這兩個網站講的內容組合在了一起,有興趣的人可以相互對照來學習。

  1. https://learndjango.com/tutorials/hello-world-5-different-ways
  2. https://developer.mozilla.org/en-US/docs/Learn/Server-side/Django/skeleton_website
END

你可能感興趣的文章

【Wicket】[Cookie]如何讀取和設定客戶端的Cookie 對於某些參數需要給予使用者,我們可以使用 Cookie 來讓客戶端記著,之後再跟伺服器裡的比對來達到驗證的目的

【Minecraft】[CoreProtect|BungeeCord]如何重新命名世界或維度名稱 當只有一個伺服器的時候,問題往往處理起來非常簡單,但是一旦當伺服器成長至兩台以上,事情便開始有趣了起來

【Maven】[Wicket](Java) 如何部署Wicket到Wildfly內 Wicket 是一個 Java 下的套件,換言之,我們的網頁伺服器後端是由 Java 來撰寫的

【JDA/discord bot】package does not exist fix JDA 4.0 和 5.0 差別還是很大的

【Wickct】(縮短網址) 如何將網頁掛載到特定路徑下 Wildfly的預設網址又臭又長又不好記,而且會被看到後端的目錄路徑安排,當然能藏就盡量藏起來啦

【Arduino/LinkIt 7697】實作小小的 MQTT Publish & Subscribe 若是要多點對多點傳輸資料,那使用 MQTT 即可快速的達成我們所需的目的

我有話要說

>>

限制:留言最高字數1000字。 限制:未登入訪客,每則留言間隔需超過10分鐘,每日最多5則留言。

訪客留言

[無留言]

隨機好文

婕兒──她的青春③ 「墮天使穹音!」婕兒拿出平底鍋。 耐耐憋著笑搖搖頭。「不是喔,她是我的……我的……」 「替身。」小穹小聲提醒忘記台詞的耐耐。

【歌評】蓮台野夜行-少女幻葬~ Necro-Fantasy 這首歌就像墜入無盡深淵的同時面臨最終決戰;不管贏還是輸,你終將失去一切,永遠消失

【英翻中歌詞】(二創歌)妖精大戰爭 ~Fairy Wars 妖精大戦争 ~Fairy Wars Star light… star bright… 星光閃耀...星輝熠熠... We’re the three brightest stars in the sky tonight! 我們是今晚

【歌評】蓮台野夜行 -月之妖鳥、化貓之幻 月の妖鳥、化猫の幻 這是一個很好的問題,現實與幻覺的界線從來沒有如此的模糊,沒有一條明確的界線將其畫開

【英翻中歌詞】(二創歌)魔術師梅莉 "Darling, you're dreaming." 「親愛的,你正在作夢」 Waking or sleeping means nothing to me. 現實與夢境只有一線之隔 If you