1. 程式人生 > >python學習day——21

python學習day——21

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