Django的Web Server架設

      在〈Django的Web Server架設〉中尚無留言

安裝Python3

電腦當然必需先安裝Python解譯器才能執行 .py 的檔案

Python -V:顯示Python 版本
pip list : 顯示安裝的軟件包

目錄架構

開啟pycharm 後,新增專案並命名為 web,此時就會在 web 目錄下自動產生 venv 虛擬環境目錄。(限專業版)

若不使用pycharm或不是專業版,可在DOS模式使用手動方式建立,如下

mkdir web 
cd web 
python -m venv venv

執行 python -m venv venv時,就會在web下建立venv目錄。此命令列的第一個venv為指令參數,不可變更。第二個 venv 為目錄名稱,可以更改,但通常都是使用 “venv”

整体的目錄結構如下圖藍色所示。至於根目錄下的 thomas及 shenny 二個虛擬網站目錄是如何產生的呢? 等會再進行說明。

d:\web
├─  venv #虛擬環境設定
│   ├─  etc
│   ├─  include
│   ├─  Scripts
│   └─  Share
├─  thomas #thomas網站
│   ├─  thomas #設定檔目錄
│   │   ├─  asgi.py
│   │   ├─  setting.py #app安裝檔
│   │   ├─  urls.py #網址連結檔
│   │   ├─  wsgi.py
│   ├─  manage.py #管理程式
│   ├─  index.py #首頁
│   └─  views.py
├─  shenny #shenny網站
│   ├─  shenny #設定檔目錄
│   │   ├─  asgi.py
│   │   ├─  setting.py
│   │   ├─  urls.py
│   │   ├─  wsgi.py
│   ├─  manage.py
│   ├─  index.py
├─  └─  views.py

安裝Django套件

請由File/Setting/Project/Python Interpreter 新增 Django 套件即可

建立虛擬網站

d:\web 底下的 thomas 及 shenny,稱為虛擬網站。此虛擬網站並不是使用檔案總管建立的空目錄,而是需在DOS模式使用如下指令建立(DOS 先要pip Django 套件)

venv\Scripts\activate : 啟動虛擬環境
django-admin startproject thomas : 建立thomas網頁專案
django-admin startproject shenny : 建立shenny網頁專案

經上述建立虛擬網站後,就會自動新增如下藍色的目錄及檔案

├─  thomas #thomas網站
│   ├─  thomas #設定檔目錄 
│   │   ├─ asgi.py 
│   │   ├─ setting.py #app安裝檔 
│   │   ├─ urls.py #網址連結檔 
│   │   ├─ wsgi.py 
│   ├─  manage.py #管理程式

啟動虛擬網站

在DOS模式輸入如下指令

cd c:\web
python thomas\manage.py runserver 7000

接下來在瀏覽器輸入 http://localhost:7000,即可看到網站已啟動了。請注意,一般網站都是使用 9000 port,但如果伺服器有安裝 Nginx的話,9000 port 會被 PHP佔用,用於與 Nginx 連結,所以建議盡量不要使用 9000。

另外也請注意,如果先前已執行 venv\Scripts\activate,則直接使用  python.exe thomas\manage.py runserver 7000 即可。也就是說,在python.exe 前不需指定路徑。

建立首頁

撰寫網頁

現在已經可以在Pycharm開始撰寫網頁了。首先在 thomas 專案名稱按右鍵,new/Python file,輸入index.py,然後輸入如下代碼

from django.http import HttpResponse
def html(request):
    s= \
        '<html>' \
            '<head>' \
                '<title>測試</title>' \
            '</head>' \
            '<body>' \
                '<table border="1" cellpadding="0" cellspacing="0">' \
                    '<tr>' \
                        '<td>第一格</td>' \
                        '<td>第二格</td>' \
                        '<td>第三格</td>' \
                    '</tr>' \
                    '<tr>' \
                        '<td>第四格</td>' \
                        '<td colspan="2">第五格</td>' \
                    '</tr>' \
                '</table>' \
            '</body>' \
        '</html>'
    return HttpResponse(s)

HttpResponse這個方法的用途,就是將字串傳送給客戶端瀏覽器,所以字串必需是 html的格式。

安裝app

開啟 thomas/thomas 子目錄下的設定檔settings.py,在 “INSTALLED_APPS” 下新增 “index”,此即表示 index.py為一支 app

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'index',
]

設定網址連結

網址連結是在設定某個網址要連結到某個 .py 檔裏的某個函數,設定檔為 thomas/thomas/urls.py。請在 urls.py 檔案新增底下藍色的代碼. path(”, index.html) 其中的 ” 空字串, 表示在網址後並不指名任何檔名. 如 http://mahaljsp.asuscomm.com:7000/(空白, 沒任何檔名)

from django.contrib import admin
from django.urls import path
import index
urlpatterns = [
    path('admin/', admin.site.urls),
    path('', index.html),
]

請注意, 在Pycharm中, import index這行會出現錯誤訊息, 可以不用理會

啟動Django及預覽

上述都完成後,即可啟動django(執行目標的 虛擬網站 中的 manage.py )

python manage.py runserver 7000

ps.如果要在Pycharm中執行的方式

右上角,選擇Edit Configurations

選+

選Shell Script

取好名稱與確認路徑後點ok

下拉框選擇剛設定的名稱,再點右邊的>

下方就會出現執行的的terminal,輸入下方語法就能執行(請注意 manage.py 的但置)

 python manage.py runserver 7000 

建立app

上面說明了如何建立首頁,只有一個很單純的 index.py 檔案,在Django中把 index.py 視為一支 app。但專案通常是有好幾支app所組成的,而每一個app又可能由好幾支 .py 程式組成。所以我們也可以建立 app 目錄,再於此目錄新增其他的 .py檔。

初始化 app目錄

底下指令建立一個travel 的app目錄

cd thomas : 進入網頁專案目錄
python manage.py startapp travel

撰寫網頁

開啟thomas\travel\travel.py, 輸入如下代碼

from django.http import HttpResponse
def html(request):
    s="Mahaljsp 旅遊網"
    return HttpResponse(s)

安裝 app

開啟 thomas\thomas\settings.py, 新增藍色的代碼

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'index',
    'travel'
]

設定網址連結

開啟thomas\thomas\urls.py, 新增如下藍色代碼

from django.contrib import admin
from django.urls import path, include
import index
import travel.travel as travel
urlpatterns = [
    path('admin/', admin.site.urls),
    #path('', include('travel.urls'))
    path('', index.html),
    path('travel/', travel.html)
]

啟動Django 後就能使用此網頁

localhost:7000/travel/

參考來源:Web Server架設 – MahalJsp (asuscomm.com)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *