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

Django提交表单出错提示错误

使用ArticleColumnForm表单,向数据库提交内容,内容包括column。如果同一用户提交的column重复,则提示表单出错,表单提交失败后,重新渲染表单提交html页面,其中提示错误信息。

涉及的代码包括:

1、forms.py

添加__init__方法,初始化表单时,包含提交表单的用户信息。

添加clean_column方法,检查column是否重复

from django import forms
from .models import ArticleColumnclass ArticleColumnForm(forms.ModelForm):def __init__(self, *args, **kwargs):user = kwargs.pop('user', None)super(ArticleColumnForm, self).__init__(*args, **kwargs)self.user = userclass Meta:model = ArticleColumnfields = ('column',)def clean_column(self):column = self.cleaned_data.get('column')user = self.user  # 获取传递的用户信息if ArticleColumn.objects.filter(user=user, column=column).exists():raise forms.ValidationError('You have already created a column with this name.')return column

2、views.py

只有在form的valid检查通过后,才进行页面的重定向,否则重新渲染add_column.html页面。渲染是使用的form不是空表,而是刚才提交的,包含错误信息的form。

@login_required
def add_column(request):if request.method == 'POST':# 获取表单article_column_form = ArticleColumnForm(data=request.POST, user=request.user)#初始化表单时,包含用户信息if article_column_form.is_valid():new_articlecolumn = article_column_form.save(commit=False)  # 创建数据库对象,commit=False,不提交new_articlecolumn.user = request.user# 将数据库对象写入new_articlecolumn.save()return HttpResponseRedirect('/article/article-column')  # 写完数据后,重定向到数据显示页面else:article_column_form = ArticleColumnForm()context = {'article_column_form':article_column_form}return render(request, 'article/column/add_column.html', context)

3、提交表单的html页面

添加form错误显示区域。

<form class="form-horizontal" action="." method="post">{% csrf_token %}<div class="row"><div class="col-md-4 text-right"><span>栏目名称:</span></div><div class="col-md-8 text-left">{{ article_column_form.column }}</div></div>{% if article_column_form.column.errors %}<div class="errors"><ul>{% for error in article_column_form.column.errors %}<li>{{ error }}</li>{% endfor %}</ul></div>{% endif %}<div class="button-group"><button type="submit">Submit</button><button type="button" onclick="window.location.href='{% url 'article:article_column' %}'">Cancel</button></div></form>

相关文章:

Django提交表单出错提示错误

使用ArticleColumnForm表单&#xff0c;向数据库提交内容&#xff0c;内容包括column。如果同一用户提交的column重复&#xff0c;则提示表单出错&#xff0c;表单提交失败后&#xff0c;重新渲染表单提交html页面&#xff0c;其中提示错误信息。 涉及的代码包括&#xff1a; …...

鸿蒙开发 组件之间的传值

1.Prop&#xff1a;父组件传递给子组件&#xff0c;单向传递&#xff0c;子组件改变值&#xff0c;父组件UI不更新。 引入子组件 并赋值&#xff0c;子组件用Prop 接收 import headerView from ../../common/bean/BaseNavHeaderView headerView({titlestr:添加地址,isback…...

[晕事]今天做了件晕事35 VM发送给gateway太多ARP,导致攻击检查?

最近遇到一个问题&#xff0c;说网关学不到新起来VM的mac地址&#xff0c;通过tshark抓包发现&#xff0c;VM已经发出去GARP了。而且连续发送了24个GARP。 就认为是网关的问题&#xff0c;为什么没网关没有学到&#xff1f;就让测试同事开网络设备的ticket。 后来听同事说&…...

虹科干货丨多设备协同无忧:Linux环境下PCAN固定设备ID通道分配指南

来源&#xff1a;虹科汽车电子 虹科干货丨多设备协同无忧&#xff1a;Linux环境下PCAN固定设备ID通道分配指南 原文链接&#xff1a;https://mp.weixin.qq.com/s/ABg6YFXGwi8lb6SW4bEaew 欢迎关注虹科&#xff0c;为您提供最新资讯&#xff01; #PCAN #汽车电子 导读 在车辆…...

【python】flask操作数据库工具SQLAlchemy,详细用法和应用实战

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…...

web前端项目已有阿里巴巴图标基础上,再次导入阿里巴巴图标的方法

如果是第一次导入阿里巴巴图标请参考: vue项目引入阿里云图标_vue引用阿里云图标fontclass-CSDN博客 本文主要想讲在项目原有阿里巴巴图标基础上,再次导入阿里巴巴图标的解决办法: 1.iconfont.json对应修改就行,这个简单一看就明白; 2.iconfont.js主要改动<symbol><…...

头歌openGauss-存储过程第2关:修改存储过程

任务描述 本关任务&#xff1a; 修改存储过程pro0101&#xff0c;并调用&#xff1b; --修改sel_course表中成绩<60的记录为成绩10&#xff0c;然后将计算机学院所有学生的选课成绩输出&#xff1b; --a、需要先删除存储过程pro0101&#xff1b; drop procedure if exists p…...

ThreadLocal简单使用案例

业务场景&#xff1a;保存业务数据表的时候&#xff0c;同时记录下日志。 import java.sql.Connection; import java.sql.DriverManager;public class DBUtil {// 数据库配置private static final String driver "com.mysql.jdbc.Driver";private static final Stri…...

创建型设计模式之建造者模式

文章目录 概述定义建造者模式原理结构图小结 概述 建造者模式又被称为生成器模式&#xff0c;是一种创建型设计模式。 和之前的单例&#xff0c;工厂一样&#xff0c;同属于创建型设计模式。 定义 建造者模式是将一个复杂对象的构建与表示分离&#xff0c;使得同样的构建过程…...

mainwindow 无菜单栏 可拖动,边界可扩大,动画浮现上边框

mainwindow 无菜单栏 可拖动,边界可扩大,动画浮现上边框 #ifndef ANIMATIONWIN_H #define ANIMATIONWIN_H #include namespace Ui {class animationWin; } class animationWin : public QWidget {Q_OBJECT public: explicit animationWin(QWidget *parent = nullptr); …...

机器学习云环境测试

等待创建完成后&#xff0c;点击 PyTorch 打开&#xff0c;创建一个全新的 notebook 在 Cell 中输入如下代码&#xff0c;并点击 Run 完成后点击 New Cell &#xff0c;在 New Cell 中输入如下代码 输入完成后点击 Run &#xff0c;运行 New Cell 。&#xff08;每个 Cell 代…...

扩散模型自动管道AutoPipeline

推荐&#xff1a;write_own_pipeline.ipynb - Colab (google.com) 为您的任务选择一个 AutoPipeline 首先选择一个检查点。例如&#xff0c;如果您对使用 runwayml/stable-diffusion-v1-5 检查点的文本到图像感兴趣&#xff0c;请使用 AutoPipelineForText2Image&#xff1a; f…...

Map六种遍历方式

下面是三组&#xff08;6种&#xff09;&#xff0c;Map 遍历方式的核心代码。 遍历方式有使用到增强for和迭代器。最下面有张图片&#xff0c;对做题有参考意义。 参考代码&#xff1a; Map map new HashMap();map.put("小猫","cat");map.put("小…...

集合-1 数组ArrayListLinkedList

一.数组 1.什么是数组&#xff1f; 数组是一种用连续的内存空间存储相同类型数据的线性数据结构。 2.为什么数组下标是从0开始&#xff1f; &#xff08;1&#xff09;数组根据下标查找元素是基于寻址公式&#xff1a;元素地址数组首地址索引i*数组存储数据类型的大小 &am…...

42-1 应急响应之账户排查

一、用户信息排查 在服务器被入侵后,攻击者可能会建立相关账户(有时是隐藏或克隆账户),方便进行远程控制。攻击者会采用的方法主要有如下几种: 直接建立一个新的账户:攻击者直接创建一个新的账户,有时为了混淆视听,账户名称与系统常用名称相似。 激活一个系统中的默认…...

Python3 笔记:sort() 和 sorted() 的区别

1、sort() 可以对列表中的元素进行排序&#xff0c;会改变原列表&#xff0c;之前的顺序不复存在。 list.sort&#xff08;key&#xff0c; reverse None&#xff09; key&#xff1a;默认值是None&#xff0c;可指定项目进行排序&#xff0c;此参数可省略。 reverse&#…...

vue 引入 emoji 表情包

vue 引入 emoji 表情包 一、安装二、组件内使用 一、安装 npm install --save emoji-mart-vue二、组件内使用 import { Picker } from "emoji-mart-vue"; //引入组件<picker :include"[people,Smileys]" :showSearch"false" :showPreview&q…...

mysql 数据库 增量备份

mysql 数据库 增量备份 https://dev.mysql.com/doc/mysql-enterprise-backup/8.0/en/mysqlbackup.incremental.html 和版本 有关系啊 xtrabackup mysql增量备份与恢复使用详解 https://www.jb51.net/database/297844fzd.htm 存储 引擎 怎么看&#xff1f; 适用于MyISAM存储引…...

SpringBoot之@Builder 注解

&#xff08;1&#xff09;Builder 生成的构造器不是完美的&#xff0c;如果没有提供必须的参数&#xff0c;构造器可能会创建出不完整或者不合法的对象&#xff0c;导致代码报错。 Builder 注解产生的 Builder 类的构造方法默认并不能限定必传参数。 &#xff08;2&#xff…...

云计算的能源消耗如何影响环境?

嗨&#xff0c;亲爱的读者朋友们&#xff0c;今天我们要聊一聊云计算的能源消耗对环境的影响。随着科技的飞速发展&#xff0c;云计算已经成为了企业和个人处理数据的首选方式。但是&#xff0c;你可曾想过&#xff0c;这些“云”究竟消耗了多少能源&#xff0c;对我们的环境又…...

FDTD复现Science正刊:二次谐波产生的奇妙之旅

FDTD复现Science正刊&#xff0c;二次谐波产生 嘿&#xff0c;大家好&#xff01;今天来聊聊用FDTD方法复现Science正刊中二次谐波产生的相关研究&#xff0c;这可是个超有趣的领域。 什么是二次谐波产生&#xff1f; 二次谐波产生&#xff08;Second Harmonic Generation&a…...

AXI总线协议实战:手把手教你用Verilog模拟关键信号波形(附代码)

AXI总线协议实战&#xff1a;手把手教你用Verilog模拟关键信号波形&#xff08;附代码&#xff09; 在FPGA和数字电路设计中&#xff0c;AXI总线协议已经成为事实上的标准接口。作为AMBA协议家族中最重要的一员&#xff0c;AXI协议以其高性能、高带宽和灵活性著称。但对于初学者…...

Golang怎么用Task替代Makefile_Golang如何用go-task编写跨平台的任务脚本文件【教程】

go-task 是用 Go 编写的跨平台任务编排工具&#xff0c;本质区别于 Makefile&#xff1a;它用 YAML 定义任务、不依赖 shell 缩进、默认不继承父环境变量、无增量构建、支持变量注入与平台条件判断&#xff0c;且单文件分发。go-task 是什么&#xff0c;和 Makefile 有什么本质…...

基于Matlab的双向LSTM网络需求预测之旅

基于matlab的双向LSTM网络的需求预测&#xff0c;结果输出包括训练集结果、训练集误差&#xff0c;测试集结果、测试集误差。 数据可更换自己的&#xff0c;程序已调通&#xff0c;可直接运行。在当今数据驱动的时代&#xff0c;需求预测对于企业的决策制定起着至关重要的作用。…...

如何通过系统性抗体研发服务加速创新药物开发?

一、为何现代抗体药物研发需要系统性技术支撑&#xff1f;抗体药物作为生物制药领域的核心组成部分&#xff0c;在肿瘤、自身免疫疾病、神经系统疾病等重大疾病治疗中展现出革命性潜力。然而&#xff0c;从靶点验证到临床候选分子确立的研发过程充满复杂挑战&#xff1a;抗体分…...

六轴关节式机械臂SW的详细三维模型

六轴关节式机械臂SW详细三维模型 自重10kg&#xff0c;末端负载5kg&#xff0c;重复定位精度0.05mm 有详细装配体和零部件&#xff0c;可用于设计参考、加工制造 有特征参数&#xff0c;可以进行编辑学习&#xff0c;非常适合DIY桌面型机械臂拆开快递箱的那一刻&#xff0c;金属…...

开源证书工具故障排查:ACME协议证书续期问题从现象到本质的深度解析

开源证书工具故障排查&#xff1a;ACME协议证书续期问题从现象到本质的深度解析 【免费下载链接】win-acme Automate SSL/TLS certificates on Windows with ease 项目地址: https://gitcode.com/gh_mirrors/wi/win-acme 问题诊断&#xff1a;NginxCertbot环境下的证书续…...

ComfyUI-Florence2深度配置指南:如何高效解决视觉语言模型加载与文档问答难题

ComfyUI-Florence2深度配置指南&#xff1a;如何高效解决视觉语言模型加载与文档问答难题 【免费下载链接】ComfyUI-Florence2 Inference Microsoft Florence2 VLM 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-Florence2 在人工智能视觉处理领域&#xff0c;F…...

TOAST UI Chart折线图实战:实时数据更新与同步工具提示完整指南

TOAST UI Chart折线图实战&#xff1a;实时数据更新与同步工具提示完整指南 【免费下载链接】tui.chart &#x1f35e;&#x1f4ca; Beautiful chart for data visualization. 项目地址: https://gitcode.com/gh_mirrors/tu/tui.chart TOAST UI Chart是一款功能强大的数…...

Phi-3-mini-4k-instruct-gguf完整指南:GGUF轻量模型在边缘设备的适配实践

Phi-3-mini-4k-instruct-gguf完整指南&#xff1a;GGUF轻量模型在边缘设备的适配实践 1. 模型概述 Phi-3-mini-4k-instruct-gguf是微软Phi-3系列中的轻量级文本生成模型GGUF版本&#xff0c;专为边缘计算设备优化设计。这个模型特别适合在资源受限的环境中执行问答、文本改写…...