1. 程式人生 > >DJANGO入門系列之(模板層的簡單介紹和視圖層的掃尾)

DJANGO入門系列之(模板層的簡單介紹和視圖層的掃尾)

dir 解析 http eth endif () 查詢 文件上傳 lte


昨日回顧:
1 虛擬環境
-1 pycharm裏創建
-2 用命令串講
2 視圖層:
1 Request對象---GET,POST,method,body,FILES,META,path(只是路徑),get_full_path(拿到全路徑,帶數據),
2 HttpResponse對象--->render,redirect,HttpResponse,JsonResponse(返回json格式)
3 反向解析--->在視圖層:本質為了去除地址,重定向來用;在模板層:取出地址,為了發請求來用
4 JsonResponse:JsonResponse(dic,json_dumps_params={‘ensure_ascii‘:False})---中文顯示編碼問題
5 FBV和CBV
from django.views import View
class Test(View)
def get(self,request):
pass
def post(self,request):
pass
6 django 2.0的path,re_path
1 re_path跟原來的url一毛一樣
2 path:準確路徑
3 path 內置轉換器:5個 int,str,path....用法:<int:year>
4 自定義轉換器:
<yyy:year>

7 文件上傳
1 html頁面上指定編碼格式:enctype="multipart/form-data"
2 視圖層:request.FILES(字典),可以根據名字,把文件取出來
-myfile=request.FILES.get(‘文件名字‘)--->得到文件對象
3 for循環文件對象,保存到本地,文件名字:myfile.name


今日內容:(模板層)
1 模版語法之變量:詳見源碼
-{{ 變量 }}:******重要******{#相當於print了該變量#}
-深度查詢---->統一都用句點符 .

2 模版之過濾器
-語法:{{第一個參數|過濾器名字:第二個參數}}
-常用過濾器:(詳細用法見源碼)
-length
-default
-slice
-date
-filesizeformat
-truncatechars
-truncatewords
-safe
-add
3 模版之標簽
-{% 標簽 %}
-for:forloop:對象(裏面有好多東西:parentloop,last,first,counter....)忘記的話, 自己打印一下
empty:被循環的對象是空,才走它
for循環可以嵌套,也可以用if
-if:
{% if forloop.first %}
<p>第一次的我 </p>
{% elif forloop.last %}
<p>最後的我 </p>
{% else %}
<p>{{ foo }}</p>吧
{% endif %}
-with:重命名,應用在變量名過長
********都要有結束********

4 自定義標簽和過濾器
--***標簽不能用在if判斷,過濾器,可以用在if判斷
-自定義過濾器
-1 先app是不是已經在setting中註冊
-2 在app下創建一個templatetags(****名字不能變***)的文件夾(模塊)
-3 在模塊下創建一個py文件,名字隨意:mytag.py
-4 # 第一步,導入template
from django.template import Library
# 第二步,定義一個叫register的變量=template.Library()
register = Library()
-5 寫一個函數,用@register.filter(name=‘yyy‘)裝飾一下(可以指定別名)
def str_add(str1, str2): #一定要有返回值
# 業務邏輯很復雜
return str1 + str2
-6 在模板裏:(新定定義的標簽,過濾器,都要重啟程序)
-{% load mytag %}
-{{‘lqz‘|str_add:‘nb‘}}
-自定義標簽:
-1-4:前4步,根過濾器的定義完全一樣
-5 只是裝飾器不一樣
@register.simple_tag()
def add_nb(value):
return value+‘nb‘
-6 在模板裏:(多個參數,以空格區分)
-{% load mytag %}
-{% add_nb ‘lqz‘%}



作業:
1 模板語法:上課講的,回去敲一遍(整理到博客上)
2 常用的過濾器,自己敲一遍
3 自定義一個過濾器:length,add(支持數字,字符串,數字字符串),
-拓展:safe
4 自定義標簽:詳見下午



DJANGO入門系列之(模板層的簡單介紹和視圖層的掃尾)