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

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的公式的含义α的含义为什么要控制梯度下降的幅度&#xff1f;导数项的含义为什么要控制梯度下降的方向&#xff1f;梯度下降何时结束&#xff1f;梯度下降算法收敛的含义正确更新梯度下降的顺序错误更新梯度下降的顺…...

SQL,group by分组后分别计算组内不同值的数量

SQL&#xff0c;group by分组后分别计算组内不同值的数量 如现有一张购物表shopping 先要求小明和小红分别买了多少笔和多少橡皮&#xff0c;形成以下格式 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 文档&#xff08;绘图实例&#xff09; 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查_查壳脱壳反编译_③

是不是生活太艰难 还是活色生香 我们都遍体鳞伤 也慢慢坏了心肠 你得到你想要的吗 换来的是铁石心肠 可曾还有什么人 再让你幻想 &#x1f3b5; 朴树《清白之年》 查壳 工具介绍Frida-dexDump Frida-dexDump简介 Frida-dexDump是基于Frida的一个工具&…...

通过MobaXterm工具可视化服务器桌面

一、MobaXterm工具 MobaXterm是一款功能强大的远程连接工具&#xff0c;可以连接到各种类型的服务器&#xff0c;包括Linux、Windows和MacOS。支持多种协议&#xff0c;包括SSH、RDP、VNC和Telnet MobaXterm可以通过X11转发功能可视化服务器桌面。 二、MobaXterm工具可视化服务…...

ctf题目

目录 1.文件包含的一道题目&#xff0c;没什么难度&#xff0c; 2.一道sql注入的题目&#xff0c;伪静态 3.限制只能本地访问。 1.文件包含的一道题目&#xff0c;没什么难度&#xff0c; 但是一个点就是它这里去包含的那个文件名就是flag&#xff0c;而不是flag.php也不是f…...

git 更改仓库地址

背景&#xff1a; 项目本来在A仓库进行保管&#xff0c;研发已经开发一段时间了&#xff0c;现在切换到了新的仓库B&#xff0c;研发本地如何将仓库切换到B 解决&#xff1a; # 查看远端地址 git remote -v # 查看远端仓库名 git remote # 重新设置远程仓库 git remote s…...

GLTFExporter是一个用于将3D场景导出为glTF格式的JavaScript库。

demo案例 GLTFExporter是一个用于将3D场景导出为glTF格式的JavaScript库。下面我将逐个讲解其入参、出参、属性、方法以及API使用方式。 入参&#xff08;Input Parameters&#xff09;: GLTFExporter的主要入参是要导出的场景对象和一些导出选项。具体来说&#xff1a; s…...

消息队列经典应用场景

笔者心中,消息队列,缓存,分库分表是高并发解决方案三剑客。 在职业生涯中,笔者曾经使用过 ActiveMQ 、RabbitMQ 、Kafka 、RocketMQ 这些知名的消息队列 。 这篇文章,笔者结合自己的真实经历,和大家分享消息队列的七种经典应用场景。 1 异步&解耦 笔者曾经负责某电…...

阿里云Salesforce CRM功能差异列表 - Winter‘24

阉割版的阿里云Salesforce由于技术和监管等因素与国际版的Salesforce差距很大&#xff01; 一、Winter‘ 24版差异概况&#xff1a; 1.1. 主要版本&#xff1a; 阿里云上的 Salesforce 提供两个版本&#xff0c;用于生产用途的 CN 版本&#xff08;CN Edition&#xff09;和用…...

WIN10系统下误删除了用户重启无法登录

WIN10系统下误删除了用户重启无法登录 不小心在控制面板的用户组里面删除了当前的用户&#xff0c;在电脑重启后无论怎么输入密码都提示不正确不能登录。 在选择登录的界面同时点击 shift 和重启按钮&#xff1b;在进入的界面选择“疑难问题”&#xff1b;选择进入安全模式&…...

国内ip怎么来回切换:操作指南与注意事项

在数字化时代&#xff0c;互联网已经成为我们日常生活、学习和工作中不可或缺的一部分。然而&#xff0c;随着网络应用的不断深化&#xff0c;用户对于网络环境的稳定性和安全性要求也越来越高。其中&#xff0c;IP地址作为网络中的关键标识&#xff0c;其切换与管理显得尤为重…...

day72Html

常用标签&#xff1a; 分类&#xff1a; 块级标签&#xff1a;独立成行 行级标签&#xff1a;不独立成行&#xff0c;同一行可放多个行级标 注意网页显示时&#xff0c;忽略空白字符,(回车符&#xff0c;空格&#xff0c;tab制表符&#xff09; 一&#xff09;块级标签&#xf…...

C语言内存函数(超详解)

乐观学习&#xff0c;乐观生活&#xff0c;才能不断前进啊&#xff01;&#xff01;&#xff01; 我的主页&#xff1a;optimistic_chen 我的专栏&#xff1a;c语言 点击主页&#xff1a;optimistic_chen和专栏&#xff1a;c语言&#xff0c; 创作不易&#xff0c;大佬们点赞鼓…...

2024年天津体育学院退役大学生士兵专升本专业考试报名安排

天津体育学院2024年退役大学生士兵免试专升本招生专业考试报名安排 一、报名安排 1.报名对象&#xff1a;免于参加天津市文化考试的退役大学生士兵&#xff08;已参加天津市统一报名且资格审核通过&#xff09; 2.报名时间&#xff1a;2024年4月4日9&#xff1a;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 连接 复制上面的连…...

Linux 系统运行速度慢有哪些排查方法?

Linux 系统变慢通常是资源供需失衡导致的&#xff0c;建议按 CPU、内存、磁盘 I/O、网络的顺序依次排查&#xff0c;优先使用 top、free、iostat 等基础命令定位瓶颈。 先说结论&#xff1a;系统卡顿本质是核心资源被过度占用&#xff0c;需先定位具体瓶颈资源&#xff0c;再针…...

Lie群方法在机器人状态估计中的创新应用

1. 状态估计技术演进与Lie群方法的核心价值在机器人导航与定位领域&#xff0c;状态估计技术扮演着大脑的角色。想象一下&#xff0c;当你在陌生城市使用手机导航时&#xff0c;系统需要实时融合GPS、陀螺仪和加速度计的数据来确定你的位置——这正是状态估计的典型应用场景。传…...

从NOIP真题到日常刷题:手把手教你用C++分离数字并统计(以‘数字统计’题为例)

从竞赛真题到实战技巧&#xff1a;C数字分离与统计的深度解析 在信息学竞赛的入门阶段&#xff0c;很多初学者面对"数字统计"这类题目时&#xff0c;往往陷入两个极端&#xff1a;要么死记硬背标准答案&#xff0c;要么被看似复杂的循环结构吓退。实际上&#xff0c;…...

vim-airline缓冲区管理终极指南:解锁高效Vim编辑的10个技巧

vim-airline缓冲区管理终极指南&#xff1a;解锁高效Vim编辑的10个技巧 【免费下载链接】vim-airline lean & mean status/tabline for vim thats light as air 项目地址: https://gitcode.com/gh_mirrors/vi/vim-airline 想要在Vim中实现极致的编辑效率吗&#xff…...

HoRain云--PHP安全插入MySQL数据指南

&#x1f3ac; HoRain 云小助手&#xff1a;个人主页 ⛺️生活的理想&#xff0c;就是为了理想的生活! ⛳️ 推荐 前些天发现了一个超棒的服务器购买网站&#xff0c;性价比超高&#xff0c;大内存超划算&#xff01;忍不住分享一下给大家。点击跳转到网站。 目录 ⛳️ 推荐 …...

中小团队如何利用Taotoken统一管理多个项目的AI调用成本

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 中小团队如何利用Taotoken统一管理多个项目的AI调用成本 对于同时推进多个AI应用开发项目的中小型技术团队而言&#xff0c;管理分…...

E-Hentai智能下载器:零成本漫画管理效率革命

E-Hentai智能下载器&#xff1a;零成本漫画管理效率革命 【免费下载链接】E-Hentai-Downloader Download E-Hentai archive as zip file 项目地址: https://gitcode.com/gh_mirrors/eh/E-Hentai-Downloader 你是否曾为下载漫画而烦恼&#xff1f;面对心爱的作品&#xf…...

WarcraftHelper完整指南:5分钟让魔兽争霸3在现代电脑上完美运行

WarcraftHelper完整指南&#xff1a;5分钟让魔兽争霸3在现代电脑上完美运行 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为魔兽争霸3在现代Win…...

稳压二极管数据手册参数深度解析:从符号到实战选型

1. 稳压二极管核心参数全解析 第一次拿到稳压二极管的数据手册时&#xff0c;我完全被那些密密麻麻的符号搞懵了。VZ、IZK、ZZT这些字母组合到底代表什么&#xff1f;后来在项目中踩过几次坑才明白&#xff0c;这些参数直接关系到电路的稳定性。就拿去年做的一个电源模块来说&a…...

别再只会用WinHex看十六进制了!这5个隐藏功能帮你搞定90%的数据恢复难题

WinHex高阶数据恢复实战&#xff1a;5个被低估的杀手级功能解析 在数据恢复领域&#xff0c;WinHex早已超越了简单的十六进制编辑器定位。这款由X-Ways公司开发的专业工具集成了磁盘编辑、内存分析、数据解释等多项强大功能&#xff0c;但大多数用户仅停留在基础的文件浏览和简…...