Django文字教程
阿新 • • 發佈:2017-09-11
pytho dict 分系統 current 靜態 for mysite 管理 nag
如下如下:
1.創建Django工程 Django-admin startproject 工程名 mysite settings.py---主配置文件 urls.py-------URL路由文件 wsgi.py-------網絡通信接口 templates-------HTML文件的歸置目錄 manage.py-------diango管理主程序 2.創建APP去處理業務請求,一個工程下面可以有多個APP.相當於一個大型項目中的分系統、子模塊、功能部件等等,相互之間比較獨立,但也有聯系。 所有的APP共享項目資源。 cd 工程名 python manage.py startapp cmdb app目錄: -migrations 數據操作記錄,是自動創建的。數據修改表結構 -__init__.py #在python3裏面可有可無都行 -__init__.py -admin.py #django 為我們提供的後臺管理。 -apps.py #配置當前App的 -models.py #ORM,寫指定的類,通過命令可以創建數據庫結構。 -tests.py #單元測試 -views.py #業務代碼。這個才是真正寫代碼的地方,上面的都是做配置的。 3.靜態文件配置-在工程下面的setting中,即主配置文件中進行配置,CSS,JS等。 mysite.settings.py,配置如下: STATICFILES_DIRS=(OS.PATH.JOIN(BASE_DIR,‘static‘),) #因為是元組,一定要有逗號 4.模板路徑配置-在工程下面的setting中,即主配置文件中進行配置,HTML等。 DIRS==> [os.path.join(BASE_DIR,‘templates‘),] 5.關閉django的跨站請求保護機制-在工程下面的setting中,即主配置文件中進行配置 註釋掉: #‘django.middleware.csrf.CsrfViewMiddleware‘ 6.定義路由規則-在工程下面的urls.py中,即URL路由文件中進行配置 urls.py ‘login‘--->函數名(只是對應一個函數名,後面是不帶括號的) 7.定義視圖函數-APP下的views.py中寫具體的函數內容。 app->views.py def func(request): #request中包含客戶端發來的請求中的所有內容 #去請求裏面取數據 #request.method: GET/POST #獲取請求的方式 #request.GET.get(‘‘,None) #獲取請求發來的數據 127.0.0.1:8000/home?nid=123&name=Jack #request.POST.get(‘email‘,None) 通過視圖函數給用戶返回數據的3中方法 #return HttpResponse(‘字符串‘) #return render(request,‘html模板的路徑‘) 例如:test1/home.html #return redirect(‘/只能填URL‘,) 不能填html模板的路徑,只能填URL 8.模板渲染 有一套特殊的模板語言 ======{{變量名}} 1). def func(request): return render(request,‘index.html‘) #發送給用戶的是靜態的數據 2). def func(request): return render(request,‘index.html‘,{‘current_user‘:"Jack"}) # index.html <html> <body> <div>{{current_user}}</div> #{{current_user}}相當於取變量值 </body> </html> 步驟: 1>.用戶請求來了,首先到達視圖函數 2>.視圖函數先去把模板拿過來,模板裏面有特殊標記,再把值與模板進行渲染,渲染完成之後就變成了字符串。如下: ================最後生成的字符串,整體返回給用戶。特殊的標記是在什麽時候所做的替換?---視圖函數在返回數據的那一剎那之前做的。 所以咱們的瀏覽器拿到字符串的時候,永遠是被渲染完畢的字符串。 <html> <body> <div>Jack</div> </body> </html> ======For循環 def func(request): return render(request,‘index.html‘,{‘current_user‘:"Jack",‘user_list‘:[‘alex‘,‘eric‘]}) index.html <html> <body> <div>{{current_user}}</div> #{{current_user}}相當於取變量值 <ul> {% for row in user_list %} #row代表列表中的每一個元素,是一個變量名 <li>{{row}}</li> {% endfor %} </ul> </body> </html> ======字典索引,註意字典與列表的取法不同,一個用的是角標,一個用的是key值。 def func(request): return render(request,‘index.html‘,{ ‘current_user‘:"Jack", ‘user_list‘:[‘alex‘,‘eric‘], ‘user_dict‘{‘k1‘:‘v1‘,‘k2‘:‘v2‘}}) index.html <html> <body> <div>{{current_user}}</div> #{{current_user}}相當於取變量值 <a>{{user_list.1}}</a> <a>{{user_dict.k1}}</a> <a>{{user_dict.k2}}</a> </body> </html> ======條件======= if可以嵌套if循環,也可以嵌套到for循環裏面。 def func(request): return render(request,‘index.html‘,{ ‘current_user‘:"Jack", ‘age‘:18, ‘user_list‘:[‘alex‘,‘eric‘], ‘user_dict‘{‘k1‘:‘v1‘,‘k2‘:‘v2‘}}) index.html <html> <body> <div>{{current_user}}</div> #{{current_user}}相當於取變量值 <a>{{user_list.1}}</a> <a>{{user_dict.k1}}</a> <a>{{user_dict.k2}}</a> {% if age %} <a>有年齡</a> {% if age > 16 %} <a>老男人</a> {% else %} <a>小鮮肉</a> {% endif %} {% else %} <a>沒年齡</a> {% endif %} </body> </html>
Django文字教程