2019年11月24日 星期日

django 在本機上執行


--前提:應該安裝好python 3.7以上
              參考書籍5.1.2節的範例(你也可以用自己的範例)

準備工作
--開一個資料夾,名稱自取,這裡叫它example
  進入example
  建立一個虛擬環境,名稱自取,這裡叫它for_heroku
  dir 後,可以看到有一個處理虛擬環境的資料夾for_heroku
--啟動虛擬環境
  命令是子目錄下的activate
        for_heroku\scripts\activate
--虛擬環境,可以看到(for_heroku)在命令列的最開頭
  用 pip list 看看虛擬目錄中裝了哪些東西
--安裝django
  命令:pip install django
--查看django的版本
  django第二版以後,路徑改用path
--建立專案,名稱自取,這裡是herokuproj,查看多了一個資料夾
--進入herokuproj資料夾,很好,這裡叫根目錄,系統叫它BASE_DIR
  裡面有一個同名資料夾,那是真正的專案目錄,存放專案的整體資訊。
  熟悉的manage.py也在這裡
--建立app,就是存放程式的所在。也是一個目錄。名稱自取,這裡叫exapp
  可以看到exapp也是一個目錄。
--順便建立模板目錄templates,這是專門存放html檔的地方。
  (位置不一定要放這裡,路徑會在後面中設定。)
--整體設定,進入專案資料夾
  看到4個py檔,目前只要設定前2個。
--請用文字編輯器打開settings.py
  把exapp加在這裡
   把模板路徑加在這裡,BASE_DIR是上面提過的根目錄。
                      (順便觀察最下一行WSGI,這是伺服器中介軟體,黃色的部份意思是專案資料夾裡面的wsgi.py檔案,application是檔案中的一個變數,heroku網站設定會用到)
   順便設定語言和時區
   順便看一下,在本機執行的時候,DEBUG=True,修改會即時反應,很方便,錯誤也有提示,但是上網前要設為False,
   否則容易受攻擊。
   另外,送上網路後,ALLOWED_HOSTS也要填入主機網址,例如ALLOWED_HOSTS=['louma1109.herokuapp.com',]
--請用文字編輯器打開url.py
   我們將使用的程式叫post,它存在exapp資料夾的views.py中,所以先引入
from exapp.views import post
   接著設定呼叫這個程式的路徑,我們要的是http://127.0.0.1:8000/post/,所以
path('post/',post)
--程式設定,先看我們要的外觀,還有在網址列中我們要如何呼叫它,這裡網址列用post來呼叫程式。
    所以,html檔大概就知道要怎麼寫了,名稱自取,但通常就取同名,post.html,好記不會亂,存檔在templates資料夾。
(以下程式,取自書中5.1.2的電子檔,只複製必要的部份)
     接著,打開exapp中的views.py
--啟動本機伺服器,畫面會停住,出現網址http://127.0.0.1:8000
--打開瀏覽器,輸入http://127.0.0.1:8000/post/觀察
輸入資料前
送出  John  資料後

---------------------------------------------------------------------------------------------------------

#當你了解以上步驟之後,你可以考慮參考下面簡要的步驟。加快你的布建速度。
mkdir abc
cd abc
python -m venv myenv
activate

pip install django
django-admin startproject myproj
cd myproj
python manage.py startapp myapp

mkdir templates

INSTALLED_APP中加入myapp
TEMPLATES中加入
'DIRS': [os.path.join(BASE_DIR,'templates'),],
ALLOWED_HOSTS = ['127.0.0.1']

url.py 中加入from myapp.views import post
urlpatterns中加入path('post/', post)

新增post.html,存在templates中。
<!doctype.html>
<html>
<head>
   <title>表單傳送範例</title>
</head>
<body>
  <form action="." method="POST" name="form1">
        {% csrf_token %}
        <div>請輸入姓名:<input type="text" name="username" />
        <input type="submit" value="送出資料"></div>
        </form>
        <div> 接收到的資料:{{mess}}</div>
</body>
</html>
views.py
from django.shortcuts import render

# Create your views here.
def post(request):
    if request.method == "POST":
        mess=request.POST['username']
    else:
        mess='表單資料尚未送出'
       
    return render(request, 'post.html', locals())
python manage.py runserver
127.0.0.1:8000/post/

沒有留言:

張貼留言