Django框架学习笔记(12.基本知识小总结)

来源:互联网 发布:行者骑行软件 编辑:程序博客网 时间:2024/05/22 04:38

1.Django请求的生命周期:

    路由系统    ->    视图函数(获取模板+数据->渲染)    ->    返回给用户字符串

2.路由系统:

    URL    如/index/    ->    函数,类.as_view()

    正则表达式    如/detail/(\d+)    ->    函数(参数),类.as_view()(参数)

    正则表达式    如/detail/(?P<uid>\d+)   ->    函数(参数:uid),类.as_view()(参数:uid)

    路由分发    在建立的app里面写类似的对应,如:

url(r'^cmdb/', include("app01.urls")),

    对应关系命名    如/detail/    name='a1'    ->视图中:reverse

                                                                    ->模板中:{% url 'a1' %}


3.视图函数:

    FBV:函数

        def index(request,*args,**kwargs):

    CBV:类

        class Home(views.View):

            def get(self,*args,**kwargs):

   

    获取用户请求的数据:

        request.POST.get()

        request.GET.get()

        request.FILES.get()

        ...............getlist()

    上传文件:

obj = request.FILES.get("文件名")obj.name    #文件名obj.size    #上传文件的字节obj.chunks  #分块取数据要上传文件时候要在form表单加入特殊的设置


    返回数据:

1.redirect("URL")2.render(request,"HTML模板的路径", {用于渲染的字典})3.HttpResponse("字符串")


4.模板语言:

示例:

render(request,"HTML模板的路径", {'obj':1234,'k1':[1,2,3,4],'k2':{'name':'root','age':19}})

在模板中:

取单值:

{{ obj }}


取列表中的元素:

{{ k1.0 }}

获取字典中的元素:

{{ k2.name }}

循环取列表:

{% for i in k1 %}    {{ i }}{% endfor %}


循环取字典:

循环keys{% for row in k2.keys %}    {{ row }}{% endfor %}循环values{% for row in k2.values %}    {{ row }}{% endfor %}循环key和value{% for k,v in k2.items %}    {{ k }}-{{ v }}{% endfor %}



5.ORM:

a.创建类和字段

class UserInfo(models.Model):    id = models.IntegerField()    username = models.CharField(max_length=32)

(注意在settings.py中注册新建的app)

            python manage.py makemigrations

            python manage.py migrate


b.操作:上一节有讲过,新补充一些:

models.UserInfo.objects.filter(id__gt=1).delete() #id>1models.UserInfo.objects.filter(id__lt=1).delete() #id<1models.UserInfo.objects.filter(id__lte=1).delete() #id<=1,大于等于相似models.UserInfo.objects.filter(id__gt=1).update(name='root',age=18)dic = {    'name':'root',    'age':18}models.UserInfo.objects.filter(id__gt=1).update(**dic)models.UserInfo.objects.filter(name=1, age=19)dic1 = {    'name': 'root',    'age__gt':18}#注意这里看可以给key加上__gtmodels.UserInfo.objects.filter(**dic1)



阅读全文
0 0
原创粉丝点击