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


相关文章
|
7天前
|
机器学习/深度学习 人工智能 TensorFlow
人工智能浪潮下的自我修养:从Python编程入门到深度学习实践
【10月更文挑战第39天】本文旨在为初学者提供一条清晰的道路,从Python基础语法的掌握到深度学习领域的探索。我们将通过简明扼要的语言和实际代码示例,引导读者逐步构建起对人工智能技术的理解和应用能力。文章不仅涵盖Python编程的基础,还将深入探讨深度学习的核心概念、工具和实战技巧,帮助读者在AI的浪潮中找到自己的位置。
|
7天前
|
机器学习/深度学习 数据挖掘 Python
Python编程入门——从零开始构建你的第一个程序
【10月更文挑战第39天】本文将带你走进Python的世界,通过简单易懂的语言和实际的代码示例,让你快速掌握Python的基础语法。无论你是编程新手还是想学习新语言的老手,这篇文章都能为你提供有价值的信息。我们将从变量、数据类型、控制结构等基本概念入手,逐步过渡到函数、模块等高级特性,最后通过一个综合示例来巩固所学知识。让我们一起开启Python编程之旅吧!
|
8天前
|
存储 Python
Python编程入门:打造你的第一个程序
【10月更文挑战第39天】在数字时代的浪潮中,掌握编程技能如同掌握了一门新时代的语言。本文将引导你步入Python编程的奇妙世界,从零基础出发,一步步构建你的第一个程序。我们将探索编程的基本概念,通过简单示例理解变量、数据类型和控制结构,最终实现一个简单的猜数字游戏。这不仅是一段代码的旅程,更是逻辑思维和问题解决能力的锻炼之旅。准备好了吗?让我们开始吧!
|
9天前
|
设计模式 算法 搜索推荐
Python编程中的设计模式:优雅解决复杂问题的钥匙####
本文将探讨Python编程中几种核心设计模式的应用实例与优势,不涉及具体代码示例,而是聚焦于每种模式背后的设计理念、适用场景及其如何促进代码的可维护性和扩展性。通过理解这些设计模式,开发者可以更加高效地构建软件系统,实现代码复用,提升项目质量。 ####
|
8天前
|
机器学习/深度学习 存储 算法
探索Python编程:从基础到高级应用
【10月更文挑战第38天】本文旨在引导读者从Python的基础知识出发,逐渐深入到高级编程概念。通过简明的语言和实际代码示例,我们将一起探索这门语言的魅力和潜力,理解它如何帮助解决现实问题,并启发我们思考编程在现代社会中的作用和意义。
|
9天前
|
机器学习/深度学习 数据挖掘 开发者
Python编程入门:理解基础语法与编写第一个程序
【10月更文挑战第37天】本文旨在为初学者提供Python编程的初步了解,通过简明的语言和直观的例子,引导读者掌握Python的基础语法,并完成一个简单的程序。我们将从变量、数据类型到控制结构,逐步展开讲解,确保即使是编程新手也能轻松跟上。文章末尾附有完整代码示例,供读者参考和实践。
|
9天前
|
人工智能 数据挖掘 程序员
Python编程入门:从零到英雄
【10月更文挑战第37天】本文将引导你走进Python编程的世界,无论你是初学者还是有一定基础的开发者,都能从中受益。我们将从最基础的语法开始讲解,逐步深入到更复杂的主题,如数据结构、面向对象编程和网络编程等。通过本文的学习,你将能够编写出自己的Python程序,实现各种功能。让我们一起踏上Python编程之旅吧!
|
10天前
|
数据采集 机器学习/深度学习 人工智能
Python编程入门:从基础到实战
【10月更文挑战第36天】本文将带你走进Python的世界,从基础语法出发,逐步深入到实际项目应用。我们将一起探索Python的简洁与强大,通过实例学习如何运用Python解决问题。无论你是编程新手还是希望扩展技能的老手,这篇文章都将为你提供有价值的指导和灵感。让我们一起开启Python编程之旅,用代码书写想法,创造可能。
|
12天前
|
设计模式 程序员 数据处理
编程之旅:探索Python中的装饰器
【10月更文挑战第34天】在编程的海洋中,Python这艘航船以其简洁优雅著称。其中,装饰器作为一项高级特性,如同船上的风帆,让代码更加灵活和强大。本文将带你领略装饰器的奥秘,从基础概念到实际应用,一起感受编程之美。
|
11天前
|
分布式计算 并行计算 大数据
Python编程中的高效数据处理技巧
Python编程中的高效数据处理技巧
31 0
下一篇
无影云桌面