2021/6/15 django基础 路由曾 视图层
2021/6/15 10:21:06
本文主要是介绍2021/6/15 django基础 路由曾 视图层,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
''' 创建项目 django-admin startproject 项目名 python manage.py startapp app01 installed_apps=[ 'app01', 'app01.apps.App01Config' ] 手动创建templates templates = [{ 'DIRS': os.path.join(BASE_DIR, 'templates') }] 手动创建静态文件 staticfiles_dirs = [ os.path.join(BASE_DIR, 'static') ] 目录结构 xxx app01 migrations __init__.py __init__.py models.py tests.py apps.py views.py admin.py xxx __init__.py urls.py wsgi.py settings.py manage.py static templates db.sqlite3 开启django服务 python manage.py runserver 静态文件 {% load static %} 引入配置文件中 static 变量的值 {% static 'zzw/1' %} 此刻static代表 /static/,即合并后/static/zzw/1 request 背过了 django三板斧 HttpResponse 返回字符串给前端,字符串中可以存在html语言,一样生效 redirect 重定向 render 返回完整html模板文件给前端,内部源码还是使用 HttpResponse django 请求声明周期图 路由匹配 from django.conf.urls import url url('re', view.xxx, name=None, kwargs=None) from django.urls import path, re_path path('绝对匹配', view.xxx, name=None) re_path('re', view.xxx, name=None, kwargs=None) --> url 转换器 <str/int/slug/uuid/path:xx> --> **kwargs str: 匹配非/以外的所有非空白字符 path:匹配所有非空白字符 int: 正整数,包括0 slug:数字、字母、下划线、中横线 uuid:uuid的标准格式 自定义转换器(可以自定义转换器,在内部书写正则,然后在url中引用、注册、调用) URL末尾反斜杠 由 append_slash=Ture 控制,默认由django加上/再匹配一次 分组命名匹配 无名有名不能混合使用 无名分组 (re) --> *args 有名分组 (?P<xxx>re) --> **kwargs 反向解析 from django.shortcuts import reverse reverse('name') --> ip后面的路径 无名反向解析 url(r'(re)') from django.shortcuts import reverse reverse('name', args=(x,)) {% url name x %} 有名分组反向解析 url(r'(?P<xxx>re)') from django.shortcuts import reverse reverse('name', args=(x,)) {% url name x %} reverse('name', kwargs={'xxx':xx}) {% url name xxx=x %} 路由分发 每一个应用下,都可以拥有自己的templates、static、urls.py,需要自己手动创建 from django.conf.urls import url, include url(r'', include('app01.urls')) from app01 import urls as xxx url(r'', include(xxx)) 名称空间 防止多个应用下的url name名称冲突(PS:name命名使用 应用名_名称,即可避免) from django.conf.urls import include, url url(r'', include('app01.urls', namespace='app01')) 这样,app01的url就存放在他自己的名称空间内,不会出现名称冲突了 伪静态 url后面都有.html结尾,即是静态网页,会增加搜索机器人的搜索频率 url(r'xxx.html') 即可 简单的视图函数 url(r'', views.zzw, name="zzw") def zzw(xxx): return HttpResponse('zzw') FBV与CBV FBV:函数方式的视图函数 CBV:基于类的视图 CBV源码 url(r'', views.xxx.as_view()) 关键在as_view(),其内部存在一个嵌套函数为view as_view()的返回值就是view view函数内部,将参数进行赋值,并返回了dispatch函数的调用 该函数内部进行了反射操作,然后返回对应的函数调用,从而实现 get请求来,就是调用get方法 CBV添加装饰器 method_decorator(login_auth, name="") 如果放在类上面,同时指定name属性,那么就是装饰指定的方法 如果放在类内的第一个方法上,那就是装饰所有方法 如果放在类内的非第一个方法上面,那就是单独装饰该方法 request 属性 .method 返回请求方式,大写 .POST 返回字典,POST请求中的数据,如 application/x-www-form-urlencoded,ajax .GET 返回字典,GET请求中的数据 .get(k) .getlist(k) .FILES 返回字典,文件数据,如 multipart/form-data,ajax中 FormData() .body 返回bytes,如ajax json .META 返回HTTP协议头部 .scheme 返回当前Http协议 http/https .path 返回当前路径,出去ip和路径参数 .path_info 与path一致 .encoding 返回编码方式,none代表使用浏览器的默认编码方式 .session 返回session .COOKIES 返回cookies .user 返回当前登录的用户对象 方法 is_secure() 如果时https协议,返回True is_ajax() 如果是ajax请求,返沪True get_full_path() 返回ip后面的完整路径,包括路径参数 get_host() 返回ip:port 用户对象方法 is_authenticated() 判断当前用户是否登录,返回bool set_password('xxx') save() check_password('xxx') 校验密码,返回bool HttpResponse a = HttpResponse('xxx') a.content a.charset a.status_code a['Content-Type'] = 'text/html' del a['Charset'] from django.http import JsonResponse JsonResponse( data, json_dumps_params={'ensure_ascii':False} safe=True, ) render ( request, 'html', {'前端名': '后端数据'}, 简单点直接写入 locals() 将函数内的局部变量全部传递过去 content-type status=200, using, ) redirect ( url permanent=True ) '''
这篇关于2021/6/15 django基础 路由曾 视图层的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-17Go学习:初学者的简单教程
- 2024-10-17Go学习:新手入门完全指南
- 2024-10-17Golang学习:初学者入门教程
- 2024-10-17Golang学习:新手入门教程
- 2024-10-17Gozero学习指南:初学者必备教程
- 2024-10-17GoZero学习:新手入门与实践指南
- 2024-10-17Go Zero入门:新手必读指南
- 2024-10-17Go Zero入门:新手必读教程
- 2024-10-17Go-Zero入门:新手指南与基础教程
- 2024-10-17Go-zero入门:新手必读教程