django 笔记

Django

目录结构:
        app名字的文件夹:
            -migrations- ---》放数据库迁移的数据
            -admin.py ---》后台管理
            -apps.py-----》app配置相关
            -models ---》orm相关(数据库)
            -test ---》测试相关
            -views ---》视图函数
            
        项目名字的文件夹
            -settings---》项目全局配置文件
            -urls---》路由和视图函数的映射关系
            -wsgi---》socket服务相关
        templates
            -所有模板文件(html页面)
        mange.py
            -执行所有命令的入口
            
            
    视图函数:
        视图函数必须有个request对象,里面包含浏览器发的所有数据。
    
    路由层:
        -路由的作用:地址跟视图函数的对应关系
        
        -简单的路由配置:
                urls(arg1,arg2):
                第一个参数为正则表达式,例如:url(r'^index', views.index),
                只要是url里是index开头的就匹配这个视图函数。
                第二个参数为要执行的视图函数
                
        -无名分组:
            用位置参数来传递
            url(r'^index/([0-9]{4})/$', views.index)
            使用正则表达式的分组把匹配到的内容自动回调后面的视图函数处理
            分组出几个数据视图函数就添加几个参数来接收
            def index(request,year):
                return HttpResponse(year)
            输入http://127.0.0.1:8000/index/1111
            得到1111
            
        -有名分组:
            分组出几个数据用关键字参数来传递到视图函数
            url(r'^index/(?P<year>[0-9]{4})/(?P<mon>[0-9]{4})$', views.index)(正则 之前没见过)
            def index(request,year,mon):
                return HttpResponse(mon + year)
            输入http://127.0.0.1:8000/index/1111/1258
            得到12581111
            
        -路由的分发:
            如果创建了新的app,那么在settings里把app的名字添加到INSTALLED_APPS中
            -1 在不同app中创建urls.py子路由
            -2 总路由导入 from django.conf.urls import include
                urlpatterns = [
                    url(r"app01/",include("app01.urls")),
                    url(r"app02/",include("app02.urls"))
                ]总路由的分发
            -3 from django.conf.urls import url
                from app01 import views
                urlpatterns = [
                    url(r"^index",views.index),
                ]#子路由的分发
        
        —reder:
            返回模板网页
            在视图函数中返回return render(request,模板网页路径)
            模板网页在templates文件夹中,也可以在settings中自行设置
            
        —redirect: 重定向
            return redirect("跳转的地址")
            重定向就是发两次请求
            第一次发请求接收到重定向的地址 代码3xx
            第二次发之前接收到的重定向的地址请求 代码200
            
            
        -反向解析:
            为了解决页面url地址改变导致其他网页无法找到此网页,动态生成。
            url(r"^index1111",views.index,name="index")
            给此url命名
            -在视图函数里用
                from django.shortcuts import reverse
                url = reverse("index")拿到“index”对应的url
            其他网页通过“index"找到网页
            -模板网页里用
                在模板网页中可以这样写"{% url 'index' %}"
                动态生成链接
        
        -名称空间:(不同app中的路由名字重复,不推荐这样用,最好不同名)
            -总路由做分发的时候,可以指定名称空间
                urlpatterns = [
                    url(r"app01/",include("app01.urls",namespace="app01")),
                    url(r"app02/",include("app02.urls", namespace="app02"))
                ]
            -反向解析:
                相应的在视图函数中:url = reverse("app01:index")
                                    url = reverse("app02:index")
                        模板层中:
                                    {% url 'app01:index' %}
                                    {% url 'app02:index' %}
                防止反向解析时 同名导致的导入错误
                
        视图层:
            1 请求对象 request:
                属性
                请求方式
                request.method
                请求体中的内容(当成字典)
                request.GET get请求的内容
                request.POST post请求的内容 表单
                request.FILES 上传的文件
                request.path 请求的路径 不带数据
                request.bady 请求体原生数据
                request.body 
                request.get_full_path()请求的全路径 带数据
            2 请求对象的文件上传
                这种格式才能提交文件 html里
                enctype="multipart/form-data"
            
            3 jsonresponse
                from django.http import Jsonresponse
                默认支持字典
                为了让Jsonresponse支持列表则在Jsonresponse里的safe=False
            4 CBV和FBV(基于类的的视图和基于函数的视图)
                CBV写法:
                    视图函数中:
                        from django.views import View
                        class Test(View):
                            def get(self, request):
                                return HttpResponse("cbv--get")
                            def post(self, request):
                                return HttpResponse("cbv--post")
                            
                    路由:
                        url(r"^Test",views.Test.as_view()),
            
                
        
            

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值