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