Python Django 编程 | 连载 03 - Django 视图

简介: Python Django 编程 | 连载 03 - Django 视图

一、初识 Django 中的视图函数

应用中的 views.py 是 Django MTV 架构中的 V,主要负责处理用户请求和生成相应的响应内容返回到前端,然后在 HTML 或者其他类型文档中渲染、显示。

在 django_urls_views 项目中使用命令行创建一个新的应用 quebec

python3 manage.py startapp quebec
复制代码

并在 settings.py 中的 INSTALLED_APPS 中注册该应用

网络异常,图片无法展示
|

在 quebec 应用下的 views.py 中新增视图函数 zulu,该函数有一个 request 参数,并返回一个字符串 Zulu,HttpResponse 可以用来返回字符串,render 则是用来返回一个页面。

from django.shortcuts import render, HttpResponse
def zulu(request):
    return HttpResponse('Zulu')
复制代码

在 quebec 应用中增加urls.py,定义 zulu 函数的路由

from django.urls import path
from .views import zulu
urlpatterns = [
    path('zulu/', zulu),
]
复制代码

将应用中的 urls 与主 urls 进行绑定

# 其余代码保持不变
from xray import urls as xray_urls
from quebec import urls as quebec_urls
urlpatterns = [
    path('admin/', admin.site.urls),
    path('xray/', include(xray_urls)),
    path('quebec/', include(quebec_urls))
]
复制代码

启动应用,浏览器访问 /quebec/zulu/

image.png

页面显示的内容符合预期

二、Django 视图的细节

视图的组成

一个视图函数可以看作由三个部分组成,

  • 用户的请求 request
  • 对用户请求的逻辑处理 handler
  • 将处理后的数据批量返回给用户的响应 response

用户的请求 request

浏览器向服务发送的请求在 Django 中是一个 request 对象,该兑现更包含了用户的信息、请求内容和请求方法,且视图函数中必须要包含一个实例化的 request 对象作为视图函数的参数,否则会报错。

request 对象的常用方法有:

  • request.GET:获取请求 URL 中 ? 后面的Key=Value形式的参数,并保存为一个字典
  • request.POST:获取 POST 请求提交的数据
  • request.path:请求的路径、URI 地址
  • request.method:请求的方法 GET 或者 POST
  • request.COOKIES:请求中的 cookies
  • request.user:请求的用户对象,可以通过它判断用户是否登录并获取用户的信息
  • request.session:当前会话,可读可写类似字典的对象
  • request.META:标准 Python 字典,包含了所有 HTTP 头部,具体的头部信息取决客户端和服务器。

可以通过 dir 函数查看 request 对象的所有方法

用户的响应 responseHttpResponse 可以直接返回字符串内容,而 render 函数则会将上下文中存放的数据在指定的模板中进行渲染。

JsonResponse 返回一个 json 类型,通常用于与前端通过 Ajax 进行交互。

Django 中的视图类Django 中支持视图类写法,视图类要继承 View 类,并通过定义 get 方法和 post 方法来处理前端发来的 GET 请求和 POST 请求,而不用向视图函数那样要先通过 request 对象的 method 方法判断 GET 请求还是 POST 请求。

在 views.py 中定义一个实体类 Whiskey 类,继承 View 类,定义 get 函数处理 GET 请求

from django.views import View
class Whiskey(View):
    def get(self, request):
        return HttpResponse('Class View Whiskey!')
复制代码

在 quebec 应用下的 urls.py 中定义视图类的路由。

path('whiskey/', views.Whiskey.as_view())
复制代码

启动应用,在浏览器中访问 /quebec/whiskey/

image.png

三、RESTful 规范

RESTFUL是一种网络应用程序的设计风格和开发方式,基于HTTP,可以使用XML格式定义或JSON格式定义。RESTFUL适用于移动互联网厂商作为业务接口的场景,实现第三方OTT调用移动网络资源的功能,动作类型为新增、变更、删除所调用资源。

REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。

互联网所有的事务都可以被抽象为资源,例如:.txt .html .jpg .mp3 .mp4等,RESTful 架构风格就是围绕资源展开的,资源操作都是统一接口的:

  • GET(SELECT):从服务器取出资源(一项或多项)
  • POST(CREATE):在服务器新建一个资源
  • PUT(UPDATE):在服务器更新资源(客户端提供完整资源数据)
  • PATCH(UPDATE):在服务器更新资源(客户端提供需要修改的资源数据)
  • DELETE(DELETE):从服务器删除资源
  • URI:每一个URI(统一资源定位符)指向一个特定的资源。通过URI来访问资源。最典型的URI就是URL。
  • 无状态:所有的资源,都可以通过URI定位,而且这个定位与其他资源无关。例如无需登录就可以通过URL查看,就是无状态。需要登录才能查看,是有状态。

RESTful 风格使使请求路径变得更加简洁,传递、获取参数值更加方便,并且框架会自动进行类型转换。


相关文章
|
2月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
275 102
|
2月前
|
数据采集 机器学习/深度学习 算法框架/工具
Python:现代编程的瑞士军刀
Python:现代编程的瑞士军刀
299 104
|
2月前
|
人工智能 自然语言处理 算法框架/工具
Python:现代编程的首选语言
Python:现代编程的首选语言
251 103
|
2月前
|
机器学习/深度学习 人工智能 数据挖掘
Python:现代编程的首选语言
Python:现代编程的首选语言
191 82
|
1月前
|
Python
Python编程:运算符详解
本文全面详解Python各类运算符,涵盖算术、比较、逻辑、赋值、位、身份、成员运算符及优先级规则,结合实例代码与运行结果,助你深入掌握Python运算符的使用方法与应用场景。
171 3
|
1月前
|
数据处理 Python
Python编程:类型转换与输入输出
本教程介绍Python中输入输出与类型转换的基础知识,涵盖input()和print()的使用,int()、float()等类型转换方法,并通过综合示例演示数据处理、错误处理及格式化输出,助你掌握核心编程技能。
398 3
|
1月前
|
并行计算 安全 计算机视觉
Python多进程编程:用multiprocessing突破GIL限制
Python中GIL限制多线程性能,尤其在CPU密集型任务中。`multiprocessing`模块通过创建独立进程,绕过GIL,实现真正的并行计算。它支持进程池、队列、管道、共享内存和同步机制,适用于科学计算、图像处理等场景。相比多线程,多进程更适合利用多核优势,虽有较高内存开销,但能显著提升性能。合理使用进程池与通信机制,可最大化效率。
251 3
|
1月前
|
Java 调度 数据库
Python threading模块:多线程编程的实战指南
本文深入讲解Python多线程编程,涵盖threading模块的核心用法:线程创建、生命周期、同步机制(锁、信号量、条件变量)、线程通信(队列)、守护线程与线程池应用。结合实战案例,如多线程下载器,帮助开发者提升程序并发性能,适用于I/O密集型任务处理。
227 0
|
2月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的多面手
Python:现代编程的多面手
79 0
|
2月前
|
存储 人工智能 算法
Python实现简易成语接龙小游戏:从零开始的趣味编程实践
本项目将中国传统文化与编程思维相结合,通过Python实现成语接龙游戏,涵盖数据结构、算法设计与简单AI逻辑,帮助学习者在趣味实践中掌握编程技能。
315 0

推荐镜像

更多
下一篇
oss云网关配置