Django框架进阶

Django的URL路由机制

settings.py文件中ROOT_URLCONF变量指定全局路由文件名称。Django使用urlpatterns变量表示路由(urls.py), 该变量是列表类型,其中的元素由path() 或 re_path()组成。path(url字符串,view处理函数),re_path(正则表示式,view处理函数)

settings.py
ROOT_URLCONF = 'mysite.urls' # 默认对应工程目录下url.py文件

urls.py
urlpatterns = [
    path('polls/', include('polls.urls')),
    path('admin/', admin.site.urls),
]

Django的URL路由流程

Django查找全局的 urlpatterns 变量 (urls.py) >>>  按照先后顺序对URL逐一匹配 urlpatterns 每个元素   >>>  找到第一个匹配时停止查找,根据匹配结果执行对应处理函数  >>>  如果没有找到匹配或出现异常,Django进行错误处理

路由函数 path() 解析

path(route,view,kwargs=None,name=None)

route: URL或URL模式,Django定义的URL转换语法

view: 处理(视图)函数的名称,或使用 include()

kwargs: 向处理函数提供的额外参数,以字典形式表示

name: 给url模式的命名

urlpatterns = [
    path('polls/2021/', include('polls.urls')),  # 精确字符串格式 polls/2021
    path('admin/<int:year>/', admin.site.urls),  # Django的转换格式 <类型.变量名>   admin/<int:year>/ 主要用于处理函数的参数传递,即 admin.site.urls(year= )
    path('polls/(?<year>[0-9]{4}/',include('helloapp.urls')) #正则表达式格式 polls/(正则表达式)/
]

Django 的视图响应类型

视图函数一般放在对应app中的views.py文件中,视图函数接受HTTP请求并返回响应,视图函数可以返回Web文本,页面,重定向,错误,图片等任何内容,视图函数通过 HttpResponse, JsonResponse 等类表达并返回响应。Django的响应类型主要有 HttpResponse类及子类(共10个),JsonResponse类,StreamingHttpResponse类,FileResponse类

HttpResponse(content,content_type=None,status=200,charset=None)类

content: 拟返回的字符串

content_type:MIME格式的返回内容

status: 响应状态码

charset: 响应的字符

视图流式响应类型

HttpResponse类及子类 , JsonResponse类 为一次性响应类。StreamingHttpResponse类主要用于大文本文件传输,FileResponse类主要用于大二进制文件传输,这两类为流式响应类。以文件下载举例:

# HttpResponse 方式 文件内容一次性响应,仅适合小文件
def file_download(request):
    # do something...
    with open('data.txt') as f:
        c = f.read()
    return HttpResponse(c)
# StreamingHttpResponse 方式 利用python的迭代器产生分段
from django.http import StreamingHttpResponse

def big_file_download(request):
    # do something
    def file_iterator(file_name,chunk_size=64):
        with open(file_name) as f:
            while True:
                c = f.read(chunk_size)
                if c:
                    yield c
                 else:
                    break
    fname = "data.txt"
    response = StreamingHttpResponse(file_iterator(fname))
    return response

Django的模板引擎与模板使用

views.py
def program(request):
    template = Template("<h1>这个程序的名字是{{ name }}<h1>")
    context = Context("name":"测试平台")
    return HttpResponse(template.render(context))

Django 模板语言入门

主要分为注释 comment 变量 variable 标签 tags 过滤器 filter

注释: {# 这是单行注释 #}              {% comment %} 这是多行注释 {% endcomment %}

变量: {{ name }} 如果变量本身是字典类型、列表类型或对象,用 . 获取元素    {{ adict.key }}  {{ alist.0 }}   {{ aobject.attribute }}

 标签:{% 关键字引导的程序逻辑 %}   标签中的关键字包括 for, endfor, block, endblock, if, elif, else, endif, in, trans, as, with, extends 等。

过滤器: {% name|过滤标签 %}  {% name|f1|f1 %}   过滤器对变量的值进行修饰 lower, escape, linebreaks,date, length等。

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值