建立模板 Templates
這裡模板使用與 FastAPI、Flask 一樣使用 Jinja 語法,這是 python框架的前端頁面常用模板引擎。
在標籤內都使用 雙括弧 來置入後端提供的變數與vuejs 相似。
if、loop條件的判斷、迴圈式,則需要在標籤上加入<% if %>、<% endif %>。
html
<!DOCTYPE html>
<html>
<body>
<!-- 判斷式 -->
<% if abc==1 %>
<!-- 迴圈 -->
<% for todo in todos %>
<p> {{ todo name }} </p>
<% endfor %>
<% endif %>
</body>
</html>
前端輸入模板
這裡建立一個 input.html 模板,來將輸入的數據post送到後端。這裡有掛上 {% csrf_token %},這是簡易的預防被 CSRF攻擊、偽造等。
html
<form action="addrecord/" method="post">
{% csrf_token %}
<label> First Name: </label>
<input name="first">
<label> Last Name: </label>
<input name="last">
<input type="submit" value="Submit">
</form>
註冊模板
在Django中所有模板資料夾一律命名為templates,且須放置在各自的app應用資料夾內,不用註冊;但前後端拆分不同人編寫時,肯定位置或命名會不同,就必須要告訴 Django放在哪裡。
py
# settings.py
TEMPLATES=[
# ...
'DIRS':['templates']
# ...
]
# ...
再來則需要告訴 view 來導向模板,這裡有幾種方法 render、loader.get_template(),試過 render是可行,而 loader.get_template() 還在測試。
py
from django.shortcuts import render
# ...
def index(request):
return render(request,'index.html')
# ...
靜態文件註冊
Django不會知道你的靜態文件放在哪裡,所以也要指定資料夾,新增以下這串內容才能啟用。
py
# settings.py
STATICFILES_DIRS=[
os.path.join(BASE_DIR, 'frontend_myvue/dist/static')
]
網路有人這樣寫:
py
MEDIA_ROOT = os.path.join(BASE_DIR, 'static')
MEDIA_URL = 'frontend_myvue/dist/'
官方這樣寫:
py
STATIC_URL='static/'