python学习day——21

Posted 想54256

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python学习day——21相关的知识,希望对你有一定的参考价值。

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的主要内容,如果未能解决你的问题,请参考以下文章

Python之路,Day21 - 常用算法学习

python自动化学习笔记之DAY21

Python学习路程day21

一个人学习Python的日子day21

Python100天学习笔记Day21 Web初识

Python100天学习笔记Day21 Web初识