Django学习笔记-视图(views)的使用
Django中可以使用views进行管理,类似于WPF的MVVM的ViewModel层,也相当于MVC架构的模Controller层。
一、基于函数的视图FBV(Function-Based View)
通过定义一个函数,包含HttpRequest对象作为参数,用来接受客户端请求,然后返回HttpResponse对象做为响应放回给客户端。
1.1 先定义一个模板文件
在template中定义一个模板文件persondetail.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Person Details</title>
</head>
<body>{{ Person }}{{ Person.name }}{{ Person.phone }}
</body>
</html>
1.2 在views.py中创建一个函数person_detail

def person_detail(request: HttpRequest, pk: int):"""Show person detailpk: the primarykey of person."""try:p = Person.objects.get(pk=pk)except Person.DoesNotExist:raise Http404("Person Does Not Exist.")return render(request, "persondetail.html", {"Person": p})
1.3 在urls.py中添加新的url
from django.urls import path, re_path
from serverapp import views as serverapp_viewsurlpatterns = [path('test/2023', serverapp_views.test), # 精确匹配path('converter/<int:num>', serverapp_views.converter), # 格式转换re_path(r'^re/(?P<num>[0-9]{1,4})/$', serverapp_views.rematch), # 正则表达式,通过添加起止符限制匹配,避免中间多级路径后匹配到,造成错误匹配。path('person', serverapp_views.get_person), # 获取人员信息path('personform', serverapp_views.get_personform), # 使用表单获取人员信息path('person_detail/<int:pk>', serverapp_views.person_detail) # 视图演示,展示人员信息
]
1.4 运行软件,在客户端访问


二、基于类的视图CBV(Class-Based View)
基于类的视图与基于函数的视图大同小异,只不过是使用类代替函数。
2.1 再views.py文件中定义类
class PersonDetailView(View):"""人员信息视图类"""form_class = PersonForm # 定义表单类initial = {"key":"value"} # 定义表单初始值tamplate_name = "personform.html" # templage file namedef get(self, request: HttpRequest, *args, **kwargs):"""Get method"""# 渲染表单return render(request, self.tamplate_name, {"personform": self.form_class(initial= self.initial)})def post(self, request: HttpRequest, *args, **kwargs):"""POST method"""form = self.form_class(request.POST)if form.is_valid():# get dataname = form.cleaned_data['name']phone = form.cleaned_data['phone']return HttpResponse(f"The peson name is {name}, phone is {phone}")return render(request, self.tamplate_name, {"personform": form})
2.2 注册新的url
from django.urls import path, re_path
from serverapp import views as serverapp_viewsurlpatterns = [path('test/2023', serverapp_views.test), # 精确匹配path('converter/<int:num>', serverapp_views.converter), # 格式转换re_path(r'^re/(?P<num>[0-9]{1,4})/$', serverapp_views.rematch), # 正则表达式,通过添加起止符限制匹配,避免中间多级路径后匹配到,造成错误匹配。path('person', serverapp_views.get_person), # 获取人员信息path('personform', serverapp_views.get_personform), # 使用表单获取人员信息path('person_detail/<int:pk>', serverapp_views.person_detail) , # 视图演示,展示人员信息path('personformview', serverapp_views.PersonDetailView.as_view()) # 基于类的视图
]
2.3 定义html文件
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>User Name</title>
</head>
<body><!--action 是访问的url--><form action="/serverapp/personformview" method="post">{% csrf_token %} <!--防止跨域攻击-->{{ personform }} <!--引用表单,views函数中定义的名称一致--><button type="submit">提交</button></form>
</body>
</html>
2.4 访问服务器


相关文章:
Django学习笔记-视图(views)的使用
Django中可以使用views进行管理,类似于WPF的MVVM的ViewModel层,也相当于MVC架构的模Controller层。 一、基于函数的视图FBV(Function-Based View) 通过定义一个函数,包含HttpRequest对象作为参数,用来接受…...
四姑娘山三日游
趁着小孩放暑假,从昆明回来之后,直接自驾到四姑娘山。 第一天 成都-四川省阿坝藏族羌族自治州小金县日隆镇(20230711) 大概9:30从成都市郫都区出发,路线如下:郫都—都江堰–映秀—耿达—卧龙—四姑娘山,中途翻过巴朗…...
spinal HDL语法学习
1 赋值语句 用来声明变量 : 用来对变量进行赋值 2 when otherwise前面是否有"."与otherwise是否换行有关系 3 case class 对Bundle进行扩展时,需要case class case class和class主要有两点区别: (1)case class不需…...
GRE TAP的工作原理与5G工业物联网中的应用
随着互联网新技术的发展以及智能化水平的提高,各企业对实时数据传输的需求也在不断提升,企业愈发重视数据中心的建设,以保障企业内网数据安全。 GRE(Generic Routing Encapsulation,通用路由封装)协议属于…...
NFT和数字藏品的安全方案解析
一、NFT和数字藏品 01 NFT是什么? NFT 是Non-Fungible Tokens 的缩写,意思是不可互换的代币,它是相对于可互换的代币而言的。不可互换的代币也称为非同质代币。什么是可互换的代币?比如BTC(比特币)、ETH&…...
第四篇-Miniconda3-CentOS7-安装
Miniconda3-CentOS7-安装 Conda可以创建你需要的不同版本的Python环境,做的各个环境之间隔离,可以有助于我们一台主机部署不同版本运行环境 下载 wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh执行 sh Miniconda3-latest-Linux-…...
高效率,38V最大输入单电感同步升/降稳压器SYV939C
SYV939是一种高压同步降压-升压转换器。该器件工作在4V至28V的宽输入电压范围内,具有10max平均电感电流能力。四个集成的低RDS(ON)开关最大限度地减少了传导损耗。 SYV939c包括完整的保护功能,如输出过流/短路保护,过压保护和热停机ÿ…...
mars3d绘制区域范围(面+边框)
1、图例(绿色面区域白色边框) 2、代码 1)、绘制区域ts文件 import { mapLayerCollection } from /hooks/cesium-map-init /*** 安全防護目標* param map*/ export const addSafetyProtection async (map) > {const coverDatas await m…...
HTML的表格应用
HTML 中的表格用于在网页上展示和组织数据。表格由行和列组成,每个单元格可以包含文本、图像或其他 HTML 元素。下面是一些常用的 HTML 表格标签和属性的应用示例: <table> 标签: 定义表格的起始和结束标记。所有的表格元素应该放在这对标签之间。…...
android的数据存储方式
android的数据存储方式 Android提供了多种数据存储方式,开发者可以根据具体的需求选择合适的存储方式。以下是Android中常用的数据存储方式: Shared Preferences(共享偏好设置): Shared Preferences允许将简单的键值…...
用C++编写一个MyString类
1.平台:vs2019 2.很多知识点写在了代码里 class MyString { private:char* str;MyString(char* p, int x){str p;} public:MyString(const char* p nullptr) :str(nullptr){if (p ! nullptr){int len strlen(p) 1;str new char[len];strcpy_s(str, len, p);}…...
Linux C语言中access函数的用法
access()函数的用法:int access(const char *filenpath, int mode) 一、access()函数的作用 access()函数用来判断某个指定路径的文件(第一个参数 filenpath),是否符合第二个参数选项(F_OK(文件是否存在)…...
c# winform 子窗体关闭时主窗体执行指令
按下一个按钮打开子窗体,点 x 关闭子窗体后主窗体自动执行某些指令。例如刷新窗体,加载数据等。 点 x 关闭子窗体后将会执行"刷新父窗体2"下面的内容,其他的没试。 Config readConfigTest new Config();//new一个子窗体并打开 re…...
vue-simple-uploader的fileAdded方法不支持异步的解决办法,autoStart 设置
每日鸡汤:悲观者可能正确,但是乐观者往往成功 假设有一个需求,上传的pdf文档不得大于10M 使用 vue-simple-uploader 这个插件,我们需要在 fileAdded 事件里面进行校验,在1.0.0版本以后,如果想停止上传&…...
WormGPT – 网络犯罪分子用来犯罪的人工智能工具
WormGPT – 网络犯罪分子用来发起商业电子邮件泄露攻击的生成式人工智能工具 前言 什么是蠕虫GPT(WormGPT) WormGPT是基于EleutherAI于2021年创建的大型语言模型GPT-J的AI模型。它具有无限的字符支持、聊天记忆保留和代码格式化功能。 如果未部署适当…...
【NLP】语音识别 — GMM, HMM
一、说明 在语音识别的深度学习(DL)时代之前,HMM和GMM是语音识别的两项必学技术。现在,有将HMM与深度学习相结合的混合系统,并且有些系统是免费的HMM。我们现在有更多的设计选择。然而,对于许多生成模型来说…...
中间件面试题
Redis相关面试题 此题是xx位面试题 (1)Redis Cluster,在一个请求过来的时候,数据分布在哪个节点, 使用的是有哪些算法? redis cluster 用不同的算法,就决定了数据如何分布到这些节点上去。 hash算法一致性hash算法hash slot算法(2)Redis为什么是高性能的? 基于内存…...
PHP使用Redis实战实录2:Redis扩展方法和PHP连接Redis的多种方案
PHP使用Redis实战实录系列 PHP使用Redis实战实录1:宝塔环境搭建、6379端口配置、Redis服务启动失败解决方案PHP使用Redis实战实录2:Redis扩展方法和PHP连接Redis的多种方案 Redis扩展方法和PHP连接Redis的多种方案 一、Redis扩展方法二、php操作Redis语…...
【Docker】Docker应用部署之Docker容器安装Redis
目录 一、搜索Redis镜像 二、拉取Redis镜像 三、创建容器 四、测试使用 一、搜索Redis镜像 docker search redis 二、拉取Redis镜像 docker pull redis:版本号 # 拉取对应版本的redis镜像 eg: docker pull redis:5.0 三、创建容器 docker run -id --nameredis -p 6379:637…...
【C++】STL——list的介绍和使用、list增删查改函数的介绍和使用、push_back、pop_back
文章目录 1.list的使用2.list的增删查改函数(1)push_front 在list首元素前插入值为val的元素(2)pop_front 删除list中第一个元素(3)push_back 在list尾部插入值为val的元素(4)pop_ba…...
springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
Cesium1.95中高性能加载1500个点
一、基本方式: 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...
在rocky linux 9.5上在线安装 docker
前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...
汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...
学校招生小程序源码介绍
基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问(基础概念问题) 1. 请解释Spring框架的核心容器是什么?它在Spring中起到什么作用? Spring框架的核心容器是IoC容器&#…...
Docker 本地安装 mysql 数据库
Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker ;并安装。 基础操作不再赘述。 打开 macOS 终端,开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...
安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖
在Vuzix M400 AR智能眼镜的助力下,卢森堡罗伯特舒曼医院(the Robert Schuman Hospitals, HRS)凭借在无菌制剂生产流程中引入增强现实技术(AR)创新项目,荣获了2024年6月7日由卢森堡医院药剂师协会࿰…...
