python學習day——21
阿新 • • 發佈:2017-11-09
upd ace remove == value 格式 ons 字典 strong
Django之路_day4
復習+總結
請求周期
form表單提交
-> URL對應關系(匹配) -> 視圖函數 -> 返回用戶字符串(HTML文件)
ajax表單提交
$(‘#i1‘).click(function(){ // 綁定一個事件 $.ajax({ // $.ajax(裏面是一個字典) url: ‘/ajax_edit‘, // 要發送到的url type: "POST", // 以post的方式發送 data: $(‘#add_form‘).serialize(), // 打包form裏所有的東西 發送,但要在提交的form表單上寫id、class內寫東西來綁定 // data: {‘user‘: 123,‘host_list‘: [1,2,3,4]}, dataType: ‘JSON‘, // 每次後端發送的都是字典轉成的字符串,每次都要轉碼太麻煩,所以寫上這個ajax內部就幫我們轉碼 traditional: true, // 傳輸列表[1,2,3,4]到後臺時要寫上 success: function(obj){ // 回調函數,執行成功後自動觸發這個函數 location.reload(); // jQuery下的 刷新頁面 }, error: function () { // 發送請求,如果後臺沒抓到時執行 } }) });
***new*** ajax不能直接做跳轉
但我們可以間接的做啊 function.reload() #刷新頁面 function.href = ‘/...‘ #做跳轉
路由系統(url)
a. /index/ -> 函數或類 b. /index/(\d+) -> 函數或類 c. /index/(?P<nid>\d+) -> 函數或類 d. /index/(?P<nid>\d+) name=‘root‘ -> 函數或類 reverse() {% url ‘root‘ 1%} e. /crm/ include(‘app01.urls‘) -> 路由分發
***new***
f. 默認值 url(r‘^index/‘, views.index, {‘name‘: ‘root‘}), def index(request,name): #向函數傳遞默認值 print(name) return HttpResponse(‘OK‘) g. 命名空間 #聽說從來都沒用過 #最外層url /crm1/ include(‘app01.urls‘,namespace=‘m1‘) /crm2/ include(‘app01.urls‘,namespace=‘m‘) app01.urls /index/ name = ‘n1‘ reverser(‘m1:n1‘) #自動生成域名views
views
之前學的request基本操作
def func(request): request.POST request.GET request.FILES request.getlist request.method request.path_info #獲取當前url return render,HttpResponse,redirect #返回的三種方式new
***new*** request.environ
from django.core.handlers.wsgi import WSGIRequest #要引入這個模塊 def index(request): for k,v in request.environ.items(): # request.environ封裝了所有的用戶請求信息 print(k,v) print(request.environ[‘HTTP_USER_AGENT‘]) # HTTP_USER_AGENT ==> 獲取請求頭(可以控制用什麽**端登錄) return HttpResponse(‘OK‘)muban
模板語言
for --> {{ for i in ...}} {{ endfor }} if --> {{ if ...}} {{ endif }} 索引--> .keys .values .items (字典中使用 都不加括號).all .filter (orm中多對多中使用)
ORM操作(增刪改查不說了好吧)
只有在admin裏才有驗證功能,在數據庫中存的都是字符串格式
class User(models.Model): username = models.CharField(max_length=32) email = models.EmailField() ***EmailField等*** 在Django Admin中有驗證功能 在添加數據庫時無驗證功能: User.objects.create(username=‘root‘,email=‘asdfasdfasdfasdf‘) #兩種情況都會提示錯誤 User.objects.filter(id=1).update(email=‘666‘) waijian
其他操作
class UserType(models.Model): name = models.CharField(max_length=32) class User(models.Model): username = models.CharField(max_length=32) email = models.EmailField() user_type = models.ForeignKey("UserType") user_list = User.objects.all() #對象方式 for obj user_list: print(obj.username,obj.email,obj.user_type_id,obj.user_type.name,obj.user_type.id) user = User.objects.get(id=1) user.同上面對象方式的操作 User.objects.all().values("username","user_type__name",) #獲取制定列的值 跨表操作要用‘__‘(元組和字典方式也用雙下劃線,詳情請看上一節)waij
外鍵(方式一,看上一節吧)
class UserType(models.Model): name = models.CharField(max_length=32) class User(models.Model): username = models.CharField(max_length=32) email = models.EmailField() user_type = models.ForeignKey("UserType") m = models.ManyToMany(‘UserGroup‘) obj = User.objects.get(id=1) obj.m.add(2) obj.m.add(2,3) obj.m.add(*[1,2,3]) obj.m.remove(...) obj.m.clear() obj.m.set([1,2,3,4,5]) # 多個組,UserGroup對象 obj.m.all() obj.m.filter(name=‘CTO‘) #在id=1下篩選name=‘CTO‘的
end~
python學習day——21