Django Web Server

      在〈Django Web Server〉中留言功能已關閉

假設要將 Web Server 建立在 d:\server\pyweb之下,請依如下步驟操作。

系統級安裝 django

先進入 DOS 命令模式,輸入如下指令

pip install django

建立專案

由 DOS 進入 d:\server,並由 django-admin startproject 開始建立專案

d:
cd \server
django-admin startproject pyweb

此時在d:\server\下,就會多出 pyweb目錄,然後在 pyweb下會有 manage.py 檔案及 pyweb 目錄

啟動 web Server

此刻已經建立好一個 web Server了,在DOS下輸入如下指令即可啟動

cd pyweb
python manage.py runserver 7000

此時到瀏覽器輸入 http://localhost:7000即可看到如下畫面

一般網站都是說明使用 9000 port,但如果伺服器有安裝 Nginx的話,9000 port 會被 PHP佔用,用於與 Nginx 的連結,所以建議盡量不要使用 9000。

建立虛擬環境

為什麼要建立虛擬環境呢,因為要使用 pycharm 進行網頁開發。可以使用 Pycharm建立,也可以使用 DOS 命令。

第一種方式,開啟 pycharm ,直接建立新專案,將位置改為  d:\server\pyweb,然後按下 “Create from Existing Sources”。

第二種方式,進入 d:\server\pyweb 後,執行如下指令

python -m venv venv
venv\Scripts\pip install django

第一個 venv為指令,表示要建立虛擬環境的意思。第二個 venv 為虛擬環境的目錄名稱,可以更改,但通常都是使用 “venv”。

使用第二種方式建立虛擬環境後,就可以開啟 Pycharm,由 File/Open開啟 d:\server\pyweb目錄。

Pycharm 有時候怪怪的,如果 Pycharm 顯示目前沒有編譯器,請由 File/Setting/Project pyweb/Python Interpreter/ 按下右上角齒輪圖示,再選取show all

然後按下上方的 “+” ,再選取 Existing environment即可

整体目錄

整体的目錄結構如下圖藍色所示。

d:\server\pyweb
├─  venv #虛擬環境設定
│   ├─  etc
│   ├─  include
│   ├─  Scripts
│   └─  Share
├─  pyweb
│   ├─  asgi.py
│   ├─  setting.py #app安裝檔
│   ├─  urls.py #網址連結檔
│   ├─  wsgi.py
└─  manage.py

建立首頁

撰寫網頁

現在已經可以在Pycharm開始撰寫網頁了。首先在專案名稱按右鍵,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

開啟 pyweb 目錄下的設定檔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 檔裏的某個函數,設定檔為 pyweb/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),
]

啟動Django及預覽

上述都完成後,即可啟動django

python manage.py runserver 7000

接下來即可啟動瀏覽器輸入 http://localhost:7000,此時就可以看到結果了

允許外部連線

假設使用 port 7000連線

1. 防火牆將 7000 打開
2. ip 分享器也將 prot 7000指向 server
3. 修改 settings.py, 將 ALLOWED_HOSTS改為如下

ALLOWED_HOSTS = ['*']

4. 啟動指令 : python manage.py runserver 0.0.0.0:7000

Windows開機自啟Django

請啟動 開始/Windows 系統管理工具/工作排程器/建立基本工作
a. 名稱 : django
b. 選擇 “在電腦啟動時執行”
c. 啟動程式
d. 程式或指令碼 : C:\Users\使用者名稱\AppData\Local\Programs\Python\Python37\python.exe
e. 新增引數 : d:\server\pyweb\manage.py runserver 0.0.0.0:7000
f. 在 django按二下,選內容,在一般標籤選取 “不論使用者登入與否均執行”

請注意,此種方法在重新開機後即會自動執行,不需要登入的動作。

一般網路上常見的方法,是由 shell:startup 放置 bat 檔。此法必需登入後才會執行,並不適合我們的需求。

Linux開機自啟Django

請注意,在 /etc/profile新增設定其實是沒用的,因為這些都是要登入後才會啟動。
正確的作法是在 /etc/init.d/之下新增django檔案,檔案內容如下

#!/bin/sh
/data/server/django/venv/bin/python3 /data/server/pyweb/manage.py runserver 0.0.0.0:7001

然後更改django權限

sudo chmod 755 django

套後在 rc3.d目錄下新增軟連結

cd /etc/rc3.d
ln -s ../init.d/django S99django

最後重新開機,即可自動啟動。