--前提:應該安裝好python 3.7以上
準備工作
--開一個資料夾,名稱自取,這裡叫它example
進入example
建立一個虛擬環境,名稱自取,這裡叫它for_heroku
dir 後,可以看到有一個處理虛擬環境的資料夾for_heroku
--啟動虛擬環境
命令是子目錄下的activate
for_heroku\scripts\activate
--虛擬環境,可以看到(for_heroku)在命令列的最開頭
用 pip list 看看虛擬目錄中裝了哪些東西
--安裝django
命令:pip install django
django第二版以後,路徑改用path
--建立專案,名稱自取,這裡是herokuproj,查看多了一個資料夾
裡面有一個同名資料夾,那是真正的專案目錄,存放專案的整體資訊。
熟悉的manage.py也在這裡
--建立app,就是存放程式的所在。也是一個目錄。名稱自取,這裡叫exapp
可以看到exapp也是一個目錄。
(位置不一定要放這裡,路徑會在後面中設定。)
--整體設定,進入專案資料夾
看到4個py檔,目前只要設定前2個。
--請用文字編輯器打開settings.py
把exapp加在這裡
把模板路徑加在這裡,BASE_DIR是上面提過的根目錄。
(順便觀察最下一行WSGI,這是伺服器中介軟體,黃色的部份意思是專案資料夾裡面的wsgi.py檔案,application是檔案中的一個變數,heroku網站設定會用到)
否則容易受攻擊。
另外,送上網路後,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來呼叫程式。
(以下程式,取自書中5.1.2的電子檔,只複製必要的部份)
接著,打開exapp中的views.py
輸入資料前
送出 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>
<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())
# 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/
沒有留言:
張貼留言