当前位置: 首页 > news >正文

Django 视图类

在Django框架中,视图类(Class-based views,简称CBVs)提供了一个面向对象的方式来定义视图。这种方式可以让你通过创建类来组织视图逻辑,而不是使用基于函数的视图(Function-based views,简称FBVs)。CBVs带来了可重用性和模块化等优势,尤其是在处理标准的CRUD操作时。

1,创建应用

 python manage.py startapp app2

2,创建模版文件

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><form method="POST">
{% csrf_token %}<p>用户名</p><input type="text" name="username"><input type="submit" value="提交">
</form></body>
</html>

3,配置模版路径

 Test/Test/settings.py

import osTEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates','DIRS': [os.path.join(BASE_DIR, 'templates')],'APP_DIRS': True,'OPTIONS': {'context_processors': ['django.template.context_processors.debug','django.template.context_processors.request','django.contrib.auth.context_processors.auth','django.contrib.messages.context_processors.messages',],},},
]

4,注册应用

Test/Test/settings.py

5,添加视图函数

Test/app2/views.py

from django.shortcuts import render# Create your views here.
from django.http import HttpResponse
from django.views import Viewclass MyView(View):def get(self, request):# 处理GET请求的逻辑return HttpResponse('get, Hello, World!')def post(self, request):# 处理POST请求的逻辑print(request.method)print(request.POST.get('username'))return HttpResponse('post, Hello, World!')

6,添加路由地址

from django.urls import path
from app2.views import MyViewurlpatterns = [path('MyView', MyView.as_view(), name='MyView'),
]

7,测试接口

Test/Test/settings.py

ps:这个中间件是为了防止跨站请求伪造的,平时用网页表单请求时,post提交是没有问题的,但是用api调用时就会被禁止,为了能使用接口调用post请求,需要注释掉。

import requestsres_get = requests.get(url='http://127.0.0.1:8000/app2/MyView')
print(res_get.text)res_post = requests.post(url='http://127.0.0.1:8000/app2/MyView' , data={'username':'admin'})
print(res_post.text)

分别成功请求get,post接口,获取接口请求的admin值

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 以sqlilabs靶场为例,讲解SQL注入攻击原理【42-53关】
  • 【web前端】CSS样式
  • pdf分割为bmp
  • oracle删除表空间和用户命令
  • MySQL事务原理
  • fastjson序列化对象后属性变更问题
  • SQL Chat:从SQL到SPEAKL的数据库操作新纪元
  • 战略引领下的成功产品开发之路
  • Tomcat源码解析(八):一个请求的执行流程(附Tomcat整体总结)
  • MATLAB 论文绘图规范标注
  • 地理信息系统(ArcGIS)在水文水资源、水环境中的实践技术应用及案例分析教程
  • 减少GPU显存的策略
  • 视觉SLAM十四讲:从理论到实践(Chapter8:视觉里程计2)
  • 公有云服务器部署springboot工程详细步骤
  • QT 和VS 针对linux开发的不同
  • 0基础学习移动端适配
  • 2017-09-12 前端日报
  • JavaScript中的对象个人分享
  • Java基本数据类型之Number
  • LeetCode18.四数之和 JavaScript
  • Redis 懒删除(lazy free)简史
  • SpriteKit 技巧之添加背景图片
  • Vue.js-Day01
  • zookeeper系列(七)实战分布式命名服务
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 汉诺塔算法
  • 前端攻城师
  • 如何设计一个微型分布式架构?
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 怎么将电脑中的声音录制成WAV格式
  • const的用法,特别是用在函数前面与后面的区别
  • ​渐进式Web应用PWA的未来
  • ​水经微图Web1.5.0版即将上线
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • $().each和$.each的区别
  • $nextTick的使用场景介绍
  • (03)光刻——半导体电路的绘制
  • (13)DroneCAN 适配器节点(一)
  • (3)医疗图像处理:MRI磁共振成像-快速采集--(杨正汉)
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (python)数据结构---字典
  • (分布式缓存)Redis哨兵
  • (附源码)ssm旅游企业财务管理系统 毕业设计 102100
  • (数据大屏)(Hadoop)基于SSM框架的学院校友管理系统的设计与实现+文档
  • (转)C#调用WebService 基础
  • (转)项目管理杂谈-我所期望的新人
  • **《Linux/Unix系统编程手册》读书笔记24章**
  • .bat文件调用java类的main方法
  • .JPG图片,各种压缩率下的文件尺寸
  • .NET CLR基本术语
  • .NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions
  • .NET Core 项目指定SDK版本