iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >django中只使用ModleForm的表单验证
  • 763
分享到

django中只使用ModleForm的表单验证

Python 官方文档:入门教程 => 点击学习

摘要

主题 众所周知,Django.fORMs极其强大,不少的框架也借鉴了这个模式,如scrapy。在表单验证时,djanGo.forms是一绝,也是面向对象的经典表现。但要用它来渲染表单

主题

众所周知,Django.fORMs极其强大,不少的框架也借鉴了这个模式,如scrapy。在表单验证时,djanGo.forms是一绝,也是面向对象的经典表现。但要用它来渲染表单那就不好玩了,除非写框架。本文章主要缕一缕如何使用django.forms来做表单验证。

django项目基本信息

  • models.py
from django.db import models


class Article(models.Model):
    title = models.CharField(max_length=50, verbose_name='标题')
    content = models.TextField(verbose_name='内容')
    create_date = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.title
  • forms.py

同目录下创建一个forms.py

from django.forms import ModelForm
from django import forms
from . models import Article
from django.core.exceptions import ValidationError

class ArticleForm(ModelForm):
    class Meta:
        model = Article
        exclude = ['id']
    
    def clean(self):
        cleaned_data = super().clean()
        title = cleaned_data.get('title')
        if 'My' not in title:
            raise ValidationError('标题中必须包含My字样', code='title')
  • views.py
    在views中,创建一个增加Article的方法
def add(request):
    if request.method == 'GET':
        return render(request, 'add.html')
    else:
        form = ArticleForm(request.POST)
        # 主要了解的是表单的验证
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('/show/')
        else:
            form.errors.as_data()            # {'__all__': [ValidationError(['标题中必须包含My字样'])]}
            form.errors.get_context()        # {'errors': dict_items([('__all__', ['标题中必须包含My字样'])]), 'error_class': 'errorlist'}
            d = form.errors.get_JSON_data()  # {'__all__': [{'message': '标题中必须包含My字样', 'code': 'title'}]}
            return HttpResponse(d.get('__all__'))

核心分析

如果是在admin中使用ModelForm的验证,那也是非常方便的,如果我们要在用户的前端响应中使用表单验证,且又不通过django.forms渲染的表单来传递验证结果,则需要看看源码
ModelForm.errorserrorsErrorDict()的实例,ErrorDict源码:

class ErrorDict(dict, RenderableErrorMixin):
    """
    A collection of errors that knows how to display itself in various formats.

    The dictionary keys are the field names, and the values are the errors.
    """

    template_name = "django/forms/errors/dict/default.html"
    template_name_text = "django/forms/errors/dict/text.txt"
    template_name_ul = "django/forms/errors/dict/ul.html"

    def __init__(self, *args, renderer=None, **kwargs):
        super().__init__(*args, **kwargs)
        self.renderer = renderer or get_default_renderer()

    def as_data(self):
        return {f: e.as_data() for f, e in self.items()}

    def get_json_data(self, escape_html=False):
        return {f: e.get_json_data(escape_html) for f, e in self.items()}

    def get_context(self):
        return {
            "errors": self.items(),
            "error_class": "errorlist",
        }

三个方法返回的都是字典,但数据结构不同,可以看情况而定。值得注意的是,在ArticleForm中,raise ValidationError时,如果code传入参数时,它将会在get_context()中显式体现出来。

总结

1、掌握这个原理,传统的全栈开发可以节省更多的时间。
2、多看源码

到此这篇关于django中只使用ModleForm的表单验证的文章就介绍到这了,更多相关django ModleForm的表单验证内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: django中只使用ModleForm的表单验证

本文链接: https://www.lsjlt.com/news/175759.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • django中只使用ModleForm的表单验证
    主题 众所周知,django.forms极其强大,不少的框架也借鉴了这个模式,如Scrapy。在表单验证时,django.forms是一绝,也是面向对象的经典表现。但要用它来渲染表单...
    99+
    2022-12-25
    django form表单验证 django中的modelform快速上手 Django ModelForm用法详解
  • django中怎么使用ModleForm
    这篇文章主要讲解了“django中怎么使用ModleForm”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“django中怎么使用ModleForm”吧!django项目基本信息models....
    99+
    2023-07-04
  • 使用Django怎么给表单添加honeypot验证
    这篇文章给大家介绍使用Django怎么给表单添加honeypot验证,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Honeypot的工作原理Honeypot又名蜜罐,其实本质上是种陷阱。我们在表单中故意通过CSS隐藏一...
    99+
    2023-06-14
  • vue表单验证rules及validator验证器如何使用
    这篇文章主要介绍“vue表单验证rules及validator验证器如何使用”,在日常操作中,相信很多人在vue表单验证rules及validator验证器如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答...
    99+
    2023-07-02
  • Flask wtforms实现表单验证使用
    目录wtforms 使用1(简单版): 使用2(复杂版): wtforms 安装:pip3 install wtforms 使用1(简单版): from flask impo...
    99+
    2024-04-02
  • PHP中的表单验证指南
    随着网络技术的发展,越来越多的网站需要使用表单来收集用户的信息。然而,为了保证用户输入的数据的安全性和有效性,我们需要在服务器端进行表单验证,而PHP正是一款非常适合实现表单验证的语言。在本文中,我们将会提供一些关于PHP中表单验证的指南,...
    99+
    2023-05-20
    表单验证 指南 PHP
  • 怎么优雅的使用Angular表单验证
    本篇内容主要讲解“怎么优雅的使用Angular表单验证”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么优雅的使用Angular表单验证”吧!说到表单,我认为一...
    99+
    2024-04-02
  • vue表单验证rules及validator验证器的使用方法实例
    目录前言表单验证rules自定义校验规则总结前言 为防止用户犯错,尽可能更早地发现并纠正错误。 Element中Form (表单)组件提供了表单验证的功能,只需要通过 rules 属...
    99+
    2024-04-02
  • Vue中如何使用Validator表单验证插件
    这期内容当中小编将会给大家带来有关Vue中如何使用Validator表单验证插件,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。基本使用<div id=&q...
    99+
    2024-04-02
  • Vue中怎么使用Validator表单验证插件
    本文小编为大家详细介绍“Vue中怎么使用Validator表单验证插件”,内容详细,步骤清晰,细节处理妥当,希望这篇“Vue中怎么使用Validator表单验证插件”文章能帮助大家解决疑惑,下面跟着小编的思...
    99+
    2024-04-02
  • 如何使用JavaScript实现表单验证
    本篇内容介绍了“如何使用JavaScript实现表单验证”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、...
    99+
    2024-04-02
  • 怎么使用HTML5实现表单验证
    这篇文章主要介绍“怎么使用HTML5实现表单验证”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么使用HTML5实现表单验证”文章能帮助大家解决问题。 HTML5...
    99+
    2024-04-02
  • jQuery表单验证插件怎么使用
    要使用jQuery表单验证插件,你需要按照以下步骤进行操作:1. 引入jQuery库和jQuery表单验证插件的源文件。在HTML文...
    99+
    2023-10-18
    jQuery
  • 详谈vue中的rules表单验证(常用)
    目录首先在表单中绑定rules并在item中定义属性prop在data或computed中编写rules规则其中name为prop名也可以直接用pattern进行匹配验证前端Vue中...
    99+
    2024-04-02
  • React中如何使用async validator进行表单验证
    这篇文章主要为大家展示了“React中如何使用async validator进行表单验证”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“React中如何使用asy...
    99+
    2024-04-02
  • django验证系统的具体使用
    目录user对象创建用户创建超级用户更改密码验证用户web请求认证用户如何登陆用户如何登出限制对未登录用户的访问LoginRequired Mixinuser对象 用户对象是认证系统...
    99+
    2023-03-21
    django 验证系统
  • Django给表单添加honeypot验证增加安全性
    目录Honeypot的工作原理Django中如何实现表单honeypot验证?编写模板标签编写装饰器参考如果你的网站中允许匿名用户通过POST方式提交表单, 比如用户注册表, 评论表...
    99+
    2024-04-02
  • 如何在AmazeUI中使用JS表单验证框架
    这期内容当中小编将会给大家带来有关如何在AmazeUI中使用JS表单验证框架,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1、需求做一个内嵌到UTribe(一款Android App)的学生会活动报名系统...
    99+
    2023-06-09
  • VUE 表单验证的扩展:探索 VUE 表单验证的无限可能
    1. 自定义验证规则 VUE 自带的表单验证功能虽然强大,但有时我们需要创建自定义验证规则来满足特定的需求。我们可以使用 Vue.extend() 方法来扩展 Vue.validator 对象,并添加自定义验证规则。例如,我们可以添加一...
    99+
    2024-02-24
    VUE 表单验证 自定义验证规则 外部库 自定义验证组件
  • PHP 与 Ajax:使用 Ajax 增强表单验证
    使用 ajax 增强 php 表单验证提供了以下好处:提高用户体验:不需要页面加载,验证更流畅、更快速。即时反馈:用户在输入时可立即收到验证错误,快速更正错误。减少服务器负载:通过在客户...
    99+
    2024-05-12
    php ajax 表单安全
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作