Day19内容回顾
1,Django请求的生命周期 路由系统-视图函数(获取模板+数据->渲染)->字符串返回给用户 2,路由系统 /index/ 函数或类.as_view() /detail(\d+)/ 函数或类.as_view() /detail(?P<nid>\d+)/ 函数或类.as_view()(参数) /detail/ 路由分发include("app01.urls") /detail/ name='a1' 路由分发include("app01.urls") 视图中:reverse 模板中:{% url "a1"%} 3,视图 FBV:函数 def index(request,*args,**kwargs): CBV:类 class Home(views.view): def get(self,request,"args"): dispatch 获取用户请求中的数据 request.method request.POST.get request.GET.get request.FILES.get #checkbox, request.......getlist() request.path_info 文件对象=request.FILES.get() 文件对象.name 文件对象.size 文件对象.chunks() <form 特殊的设置></form> 给用户返回数据: HttpResponse render(request,'index.html模板文件的路径',{'user':user}) redirect("url") 4,模板语言: render(request,"模板文件的路径",{'obj':1234,'k1':[1,2,3,4],"k2":{'name':'张扬','age':73}) {{obj}} 1234 {{k1.3}}----4 {{k2.name}}----张扬 {% for i in k1 %} <p> {{i}} </p> {% endfor %} {% for k in k2.keys %} <p> {{k}} </p> {% endfor %} {% for v in k2.values %} <p> {{row}} </p> {% endfor %} {% for k,v in k2.items %} <p> {{k}}-{{v}} </p> {% endfor %} 5,ORM a.创建类和字段 class User(models.Model) uid=models.IntegerField() name=models.CharField(max_length=12) #字符长度 python manage.py makemigrations python manage.py migrate #settings.py中注册APP b.操作,注意字典的操作 增:models.User.objects.create(name='Alex',age=18) dic={'name':'xx','age':19} models.User.objects.create(**dic) obj=models.User(name='Jack',age=18) obj.save() 删:models.User.objects.filter(id=12).delete() 改:models.User.objects.filter(id__gt=1).update(name='Jack') dic={'name':'xx','age':19} models.User.objects.filter(id__gt=1).update(**dic) 查:models.User.objects.filter(uid=12) models.User.objects.filter(uid__gt=12 大于 models.User.objects.filter(uid__lt=12) 小于 models.User.objects.filter(uid__gte=12) 大于等于 models.User.objects.filter(uid__lte=12) 小于等于 dic={'name':'xx','age':19} models.User.objects.filter(**dic) 6,外键操作 class UserType(models.Model) caption=models.CharField(max_length=32) #1,普通 #2,VIP用户 #3,游客 class User(models.Model) uid=models.IntegerField() name=models.CharField(max_length=12) #字符长度 user_type_id=models.IntergerField() #此时的数值大小没有约束 user_type=models.ForeignKey("UserType",to_field='id') #约束 name age user_type_id #张扬 18 1 #李四 20 2