Django(四)-搭建第一个应用(3)
一、问题详情页
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>展示某个投票的问题和不带结果的选项列表</title>
</head>
<body><form action="{% url 'polls:vote' question.id %}" method="post">
{% csrf_token %}
<fieldset><legend><h1>{{ question.question_text }}</h1></legend>{% if error_message %}<p><strong> {{ error_message }}</strong> </p> {% endif %}{% for choice in question.choice_set.all %}<input type="radio" name="choice" id="choice{{ forloop.counter }}" value="{{ choice.id }}"><label for="choice{{ forloop.counter }}">{{ choice.choice_text }}</label><br><li>{{ choice.choice_text }}</li>{% endfor %}
</fieldset>
<input type="submit" value="Vote">
</form>
</body>
</html>
二、问题结果页
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<h1> {{ question.question_text }}</h1>
<ul>{% for choice in question.choice_set.all %}<li> {{ choice.choice_test }} -- {{ choice.votes }}</li>{% endfor %}
</ul>{# 跳转到某一问题的投票详情页#}
<a href="{% url 'polls:detail' question.id %}">vote again?</a></body>
</html>
三、投票处理器视图
# 3.投票处理器:用于响应用户为某个问题的特定选项投票的操作
def vote(request,question_id):question = get_object_or_404(Question,pk = question_id)try:selected_choice = question.choice_set.get(pk = request.POST["choice"])except (KeyError,Choice.DoesNotExist):return render(request,"polls/detail.html",{"quesiton":question,"error_message":"You didn't select a choice"})else:selected_choice.votes = F("votes") + 1selected_choice.save()return HttpResponseRedirect(reverse("polls:results",args=(question.id,)))
四、引入通用视图之前的urlCONF
from django.urls import pathfrom . import views# 为视图函数配置url
# name
# 设置app的命名空间,主要是为了区分不同app下相同名字的视图
app_name = "polls"
urlpatterns = [# 当 Django 响应一个请求时,它会从 urlpatterns 的第一项开始,按顺序依次匹配列表中的项,直到找到匹配的项。# 比如URLconf 在处理请求 https://www.example.com/myapp/ 时,它会尝试匹配 myapp/path("",views.index,name= "index"),path("<int:question_id>/",views.detail,name = "detail"),path("<int:question_id>/results/", views.results, name = "results"),path("<int:question_id>/vote/", views.vote, name = "vote"),
]
五、引入通用视图
from django.db.models import F
from django.http import HttpResponse, Http404,HttpResponseRedirect
from django.shortcuts import render, get_object_or_404
from django.urls import reverse
from django.views.generic import ListView
from django.views import generic# Create your views here.from .models import Question,Choiceclass indexView(generic.ListView):# 默认情况下,ListView使用一个叫做 <app name>/<model name>_list.html的默认模板# 因此默认模板为polls/index_list.html# 此例我本手动指定template_name为"polls/index.html"template_name = "polls/index.html"# 默认的上下文变量名(其对应的值会传递到index.html)为question_list(命名规则:模板名小写_list)# 因为之前的代码中,在index.html中引用的变量名都是latest_question_list,因此使用context_object_name覆盖默认的行为context_object_name = "latest_question_list"# 如果不重写get_queryset,而使用默认的 model = Question# 其实等价于 Question.objects.all()def get_queryset(self):"""返回最近5个发布的问题"""return Question.objects.order_by("-pub_date")[:5]# latest_question_list = Question.objects.order_by("-pub_date")[:5]# context = {"latest_question_list":latest_question_list}# return render(request,"polls/index.html",context)# output = ", ".join([q.question_text for q in latest_question_list])# return HttpResponse(output)# 1.问题详情页:展示某个投票的问题和不带结果的选项列表
class detailView(generic.DetailView):model = Questiontemplate_name = "polls/detail.html"# 404异常处理-传统方式# try:# question = Question.objects.get(pk=question_id)# except Question.DoesNotExist:# raise Http404("Quesition does not exit")# 404异常处理-利用Django提供的函数# question = get_object_or_404(Question,pk=question_id)# return render(request,"polls/detail.html",{"question":question})# 2.问题结果页:展示某个投票的结果
class resultsView(generic.DetailView):model = Questiontemplate_name = "polls/result.html"# question = get_object_or_404(Question,pk= question_id)# return render(request,"polls/result.html",{"question":question})# 3.投票处理器:用于响应用户为某个问题的特定选项投票的操作
def vote(request,question_id):question = get_object_or_404(Question,pk = question_id)try:selected_choice = question.choice_set.get(pk = request.POST["choice"])except (KeyError,Choice.DoesNotExist):return render(request,"polls/detail.html",{"quesiton":question,"error_message":"You didn't select a choice"})else:selected_choice.votes = F("votes") + 1selected_choice.save()return HttpResponseRedirect(reverse("polls:results",args=(question.id,)))
六、引入通用视图之后的urlCONF
第二和第三个模式的路径字符串中匹配的模式名称已从 <question_id> 更改为 <pk>。这是因为我们将使用 DetailView 通用视图来替换我们的 detail() 和 results() 视图,它期望从 URL 中捕获的主键值被称为 "pk"。
from django.urls import pathfrom . import views# 为视图函数配置url
# name
# 设置app的命名空间,主要是为了区分不同app下相同名字的视图
app_name = "polls"
urlpatterns = [# 当 Django 响应一个请求时,它会从 urlpatterns 的第一项开始,按顺序依次匹配列表中的项,直到找到匹配的项。# 比如URLconf 在处理请求 https://www.example.com/myapp/ 时,它会尝试匹配 myapp/path("",views.indexView.as_view(),name= "index"),path("<int:pk>/",views.detailView.as_view(),name = "detail"),path("<int:pk>/results/", views.resultsView.as_view(), name = "results"),path("<int:question_id>/vote/", views.vote, name = "vote"),
]
相关文章:
Django(四)-搭建第一个应用(3)
一、问题详情页 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>展示某个投票的问题和不带结果的选项列表</title> </head> <body><form action"{% url polls:vote questi…...
吴恩达2022机器学习专项课程(一) 4.2 梯度下降实践
问题预览/关键词 本节内容梯度下降更新w的公式梯度下降更新b的公式的含义α的含义为什么要控制梯度下降的幅度?导数项的含义为什么要控制梯度下降的方向?梯度下降何时结束?梯度下降算法收敛的含义正确更新梯度下降的顺序错误更新梯度下降的顺…...
SQL,group by分组后分别计算组内不同值的数量
SQL,group by分组后分别计算组内不同值的数量 如现有一张购物表shopping 先要求小明和小红分别买了多少笔和多少橡皮,形成以下格式 SELECT name,COUNT(*) FROM shopping GROUP BY name;SELECT name AS 姓名,SUM( CASE WHEN cargo 笔 THEN 1 ELSE 0 END)…...
关于python中常用命令(持续更新中)
目录 关于pip 卸载安装pip 更新pip 更换pip镜像源 清除缓存 更新指定包 指定清华镜像下载指定包 关于conda 更换清华镜像源 优先使用清华镜像 清除缓存 关于数据分析、数据挖掘常用 Matplotlib 3.6.0 文档(绘图实例) jupyter字体问题 jup…...
JAVA学习笔记21
1.IDEA的使用 1.ctrl B 快速定位到方法 2.ctrl Y 快速删除行 3.ctrl D 快速复制行 4.ctrl H 查看继承的层级关系 5.快速格式化代码 ctrl shift L 6.alt R 快速允许程序 7.ctrl / 快速添加注释 1.包(软件包) 1.1包的三大作用 1.区分相同名字的类 2.当类很多的…...
如何制作Word模板并用Java导出自定义的内容
1前言 在做项目时会按照指定模板导出word文档,本文讲解分析需求后,制作word模板、修改模板内容,最终通过Java代码实现按照模板自定义内容的导出。 2制作word模板 2.1 新建word文档 新建word文档,根据需求进行编写模板内容,调整行间距和段落格式后将指定替换位置留空。…...
ubuntu 安装配置samba服务器完整教程
ubuntu 安装配置samba服务器完整教程 问题描述解决方法郑重声明:本人原创博文,都是实战,均经过实际项目验证出货的 转载请标明出处:攻城狮2015 Platform: Intel arm64 OS:ubuntu16.04 问题描述 在安卓驱动系统开发的过程中,会需要搭建服务器,又需要搭建samba服务器,下面就…...
【APP_TYC】数据采集案例天眼APP查_查壳脱壳反编译_③
是不是生活太艰难 还是活色生香 我们都遍体鳞伤 也慢慢坏了心肠 你得到你想要的吗 换来的是铁石心肠 可曾还有什么人 再让你幻想 🎵 朴树《清白之年》 查壳 工具介绍Frida-dexDump Frida-dexDump简介 Frida-dexDump是基于Frida的一个工具&…...
通过MobaXterm工具可视化服务器桌面
一、MobaXterm工具 MobaXterm是一款功能强大的远程连接工具,可以连接到各种类型的服务器,包括Linux、Windows和MacOS。支持多种协议,包括SSH、RDP、VNC和Telnet MobaXterm可以通过X11转发功能可视化服务器桌面。 二、MobaXterm工具可视化服务…...
ctf题目
目录 1.文件包含的一道题目,没什么难度, 2.一道sql注入的题目,伪静态 3.限制只能本地访问。 1.文件包含的一道题目,没什么难度, 但是一个点就是它这里去包含的那个文件名就是flag,而不是flag.php也不是f…...
git 更改仓库地址
背景: 项目本来在A仓库进行保管,研发已经开发一段时间了,现在切换到了新的仓库B,研发本地如何将仓库切换到B 解决: # 查看远端地址 git remote -v # 查看远端仓库名 git remote # 重新设置远程仓库 git remote s…...
GLTFExporter是一个用于将3D场景导出为glTF格式的JavaScript库。
demo案例 GLTFExporter是一个用于将3D场景导出为glTF格式的JavaScript库。下面我将逐个讲解其入参、出参、属性、方法以及API使用方式。 入参(Input Parameters): GLTFExporter的主要入参是要导出的场景对象和一些导出选项。具体来说: s…...
消息队列经典应用场景
笔者心中,消息队列,缓存,分库分表是高并发解决方案三剑客。 在职业生涯中,笔者曾经使用过 ActiveMQ 、RabbitMQ 、Kafka 、RocketMQ 这些知名的消息队列 。 这篇文章,笔者结合自己的真实经历,和大家分享消息队列的七种经典应用场景。 1 异步&解耦 笔者曾经负责某电…...
阿里云Salesforce CRM功能差异列表 - Winter‘24
阉割版的阿里云Salesforce由于技术和监管等因素与国际版的Salesforce差距很大! 一、Winter‘ 24版差异概况: 1.1. 主要版本: 阿里云上的 Salesforce 提供两个版本,用于生产用途的 CN 版本(CN Edition)和用…...
WIN10系统下误删除了用户重启无法登录
WIN10系统下误删除了用户重启无法登录 不小心在控制面板的用户组里面删除了当前的用户,在电脑重启后无论怎么输入密码都提示不正确不能登录。 在选择登录的界面同时点击 shift 和重启按钮;在进入的界面选择“疑难问题”;选择进入安全模式&…...
国内ip怎么来回切换:操作指南与注意事项
在数字化时代,互联网已经成为我们日常生活、学习和工作中不可或缺的一部分。然而,随着网络应用的不断深化,用户对于网络环境的稳定性和安全性要求也越来越高。其中,IP地址作为网络中的关键标识,其切换与管理显得尤为重…...
day72Html
常用标签: 分类: 块级标签:独立成行 行级标签:不独立成行,同一行可放多个行级标 注意网页显示时,忽略空白字符,(回车符,空格,tab制表符) 一)块级标签…...
C语言内存函数(超详解)
乐观学习,乐观生活,才能不断前进啊!!! 我的主页:optimistic_chen 我的专栏:c语言 点击主页:optimistic_chen和专栏:c语言, 创作不易,大佬们点赞鼓…...
2024年天津体育学院退役大学生士兵专升本专业考试报名安排
天津体育学院2024年退役大学生士兵免试专升本招生专业考试报名安排 一、报名安排 1.报名对象:免于参加天津市文化考试的退役大学生士兵(已参加天津市统一报名且资格审核通过) 2.报名时间:2024年4月4日9:00-4月5日17…...
linux bypy 定时备份到百度网盘
安装 # 先卸载安装的python-pip sudo yum remove python-pip# 下载get-pip.py文件 wget https://bootstrap.pypa.io/pip/2.7/get-pip.py sudo python get-pip.py直接访问这个地址下载文件,再导入linux更快! https://bootstrap.pypa.io/pip/2.7/get-pip.py 连接 复制上面的连…...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
反射获取方法和属性
Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...
Module Federation 和 Native Federation 的比较
前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...
无人机侦测与反制技术的进展与应用
国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机(无人驾驶飞行器,UAV)技术的快速发展,其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统,无人机的“黑飞”&…...
什么是VR全景技术
VR全景技术,全称为虚拟现实全景技术,是通过计算机图像模拟生成三维空间中的虚拟世界,使用户能够在该虚拟世界中进行全方位、无死角的观察和交互的技术。VR全景技术模拟人在真实空间中的视觉体验,结合图文、3D、音视频等多媒体元素…...
加密通信 + 行为分析:运营商行业安全防御体系重构
在数字经济蓬勃发展的时代,运营商作为信息通信网络的核心枢纽,承载着海量用户数据与关键业务传输,其安全防御体系的可靠性直接关乎国家安全、社会稳定与企业发展。随着网络攻击手段的不断升级,传统安全防护体系逐渐暴露出局限性&a…...
【笔记】AI Agent 项目 SUNA 部署 之 Docker 构建记录
#工作记录 构建过程记录 Microsoft Windows [Version 10.0.27871.1000] (c) Microsoft Corporation. All rights reserved.(suna-py3.12) F:\PythonProjects\suna>python setup.py --admin███████╗██╗ ██╗███╗ ██╗ █████╗ ██╔════╝…...
智警杯备赛--excel模块
数据透视与图表制作 创建步骤 创建 1.在Excel的插入或者数据标签页下找到数据透视表的按钮 2.将数据放进“请选择单元格区域“中,点击确定 这是最终结果,但是由于环境启不了,这里用的是自己的excel,真实的环境中的excel根据实训…...
