资讯专栏INFORMATION COLUMN

我对 Django 中 froms 使用的理解

zhonghanwen / 2452人阅读

摘要:我觉得中的就是用与渲染成语言的代码。用来帮助我们减少写的工作量。下面的代码就是本博客实现评论功能的。

这篇文章谈一下我对 Django 中 forms的简单理解,确切的说像是一种代码的说明。

我觉得 Django 中的forms 就是view用与渲染成html语言的代码。用来帮助我们减少写html的工作量。

下面的代码就是本博客实现评论功能的forms。

from django import forms
from .models import Comment

import mistune


class CommentForm(forms.ModelForm):
    nickname = forms.CharField(
        label="昵称",
        max_length=50,
        widget=forms.widgets.Input(
            attrs={"class": "form-control", "style": "width: 60%;"}
        )
    )
    email = forms.CharField(
        label="Email",
        max_length=50,
        widget=forms.widgets.Input(
            attrs={"class": "form-control", "style": "width: 60%;"}
        )
    )

    website = forms.CharField(
        label="网站",
        max_length=100,
        widget=forms.widgets.URLInput(
            attrs={"class": "form-control", "style": "width: 60%;"}
        )
    )

    content = forms.CharField(
        label="内容",
        max_length=500,
        widget=forms.widgets.Textarea(
            attrs={"row": 6, "class": "form-control"}
        )
    )

    def clean_content(self):
        content = self.cleaned_data.get("content")
        if len(content) < 10:
            raise forms.ValidationError("内容长度太短了!")
        content = mistune.markdown(content)
        return content
    
    class Meta:
        model = Comment
        fields = ["nickname", "email", "website", "content"]
       

下面我一段一段的解释一下:

from django import forms  # 导入 forms 模块
from .models import Comment  # 导入Comment模型,评论的需要填写的字段均来自于此

import mistune  # 导入 mistune 模块,为了使评论支持markdown语法
class CommentForm(forms.ModelForm):  # 我们写的CommentForm 继承了forms模块中的ModelForm类
    nickname = forms.CharField(  # 这里我们对模型中的每一个字段对应的表单进行设置
        label="昵称",  # 这里对应html label标签中的文字
        max_length=50,  # 设置表单中填写的最大长度
        widget=forms.widgets.Input(  # 设置html中的标签类型为input
            attrs={"class": "form-control", "style": "width: 60%;"}  # 规定input的样式
        )
    )

def clean_content(self):  # 判断评论长度和表单数据验证
        content = self.cleaned_data.get("content")
        if len(content) < 10:
            raise forms.ValidationError("内容长度太短了!")
        content = mistune.markdown(content)
        return content

class Meta:  # 规定类的元数据
        model = Comment  
        fields = ["nickname", "email", "website", "content"]

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/45056.html

相关文章

  • Django数据验证(validating objects)

    摘要:在中,对数据进行校验有两种方式一种是通过中校验,一种是通过校验。所有内容都是基于的官网文档整理而来数据校验的触发中的校验是通过调用方法来执行的。注意值得注意的是上面多次提到,在执行方法的时候,是不会进行数据校验的。 在Django中,对数据进行校验有两种方式:一种是通过Form中校验,一种是通过Model校验。在次,我对Model中的校验方法做下记录。 所有内容都是基于Django1....

    张汉庆 评论0 收藏0
  • flask 爬坑指南(一)如何开始一个flask应用

    摘要:前言去年十月开始学习一开始写了一个的爬虫将自己在过程中的一些经验写了下来没想到那么多人支持。但目前也只是处于能用状态。及如何将一个文件夹下文件变成一个包呢。而不仅仅是一个服务器无法理解此请求。 前言 去年十月开始学习python一开始写了一个python的爬虫 将自己在过程中的一些经验写了下来没想到那么多人支 持。之后因为一些实验室的需求就转投python的web开发 一开...

    Michael_Lin 评论0 收藏0
  • Lunar, 一个Python网络框架实现

    摘要:核心的几个组件模板引擎,框架,请求和应答的处理还是有一些难度,但是经过一步步的分析和编码还是能够完成功能。模板引擎模板引擎是另外一个比较大和的模块。 前前后后,大概两个月的时间,lunar这个项目终于达到了一个很高的完整度。 Lunar是一个Python语言的网络框架,类似于Django,Flask,Tornado等当下流行的web framework。最初有这个想法是在大二下学期,...

    邱勇 评论0 收藏0
  • django rest framework个人学习笔记(一)————Install

    摘要:本文主要是用来记录自己学习的过程。其中可能会有很多自己的错误理解。这里主要会用到的知识有百度百科阮一峰理解架构其余请自行百度。所有的全局设置都放在的字典中。使用标准的权限,未认证的用户只读权限不要忘记将添加到你的中。 本文主要是用来记录自己学习django-rest-framework的过程。其中可能会有很多自己的错误理解。 这里主要会用到的知识有 1. [django](https:...

    yuxue 评论0 收藏0
  • django rest framework个人学习笔记(一)————Install

    摘要:本文主要是用来记录自己学习的过程。其中可能会有很多自己的错误理解。这里主要会用到的知识有百度百科阮一峰理解架构其余请自行百度。所有的全局设置都放在的字典中。使用标准的权限,未认证的用户只读权限不要忘记将添加到你的中。 本文主要是用来记录自己学习django-rest-framework的过程。其中可能会有很多自己的错误理解。 这里主要会用到的知识有 1. [django](https:...

    yagami 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<