成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

我對(duì) Django 中 froms 使用的理解

zhonghanwen / 2501人閱讀

摘要:我覺(jué)得中的就是用與渲染成語(yǔ)言的代碼。用來(lái)幫助我們減少寫(xiě)的工作量。下面的代碼就是本博客實(shí)現(xiàn)評(píng)論功能的。

這篇文章談一下我對(duì) Django 中 forms的簡(jiǎn)單理解,確切的說(shuō)像是一種代碼的說(shuō)明。

我覺(jué)得 Django 中的forms 就是view用與渲染成html語(yǔ)言的代碼。用來(lái)幫助我們減少寫(xiě)html的工作量。

下面的代碼就是本博客實(shí)現(xiàn)評(píng)論功能的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="網(wǎng)站",
        max_length=100,
        widget=forms.widgets.URLInput(
            attrs={"class": "form-control", "style": "width: 60%;"}
        )
    )

    content = forms.CharField(
        label="內(nèi)容",
        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("內(nèi)容長(zhǎng)度太短了!")
        content = mistune.markdown(content)
        return content
    
    class Meta:
        model = Comment
        fields = ["nickname", "email", "website", "content"]
       

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

from django import forms  # 導(dǎo)入 forms 模塊
from .models import Comment  # 導(dǎo)入Comment模型,評(píng)論的需要填寫(xiě)的字段均來(lái)自于此

import mistune  # 導(dǎo)入 mistune 模塊,為了使評(píng)論支持markdown語(yǔ)法
class CommentForm(forms.ModelForm):  # 我們寫(xiě)的CommentForm 繼承了forms模塊中的ModelForm類
    nickname = forms.CharField(  # 這里我們對(duì)模型中的每一個(gè)字段對(duì)應(yīng)的表單進(jìn)行設(shè)置
        label="昵稱",  # 這里對(duì)應(yīng)html label標(biāo)簽中的文字
        max_length=50,  # 設(shè)置表單中填寫(xiě)的最大長(zhǎng)度
        widget=forms.widgets.Input(  # 設(shè)置html中的標(biāo)簽類型為input
            attrs={"class": "form-control", "style": "width: 60%;"}  # 規(guī)定input的樣式
        )
    )

def clean_content(self):  # 判斷評(píng)論長(zhǎng)度和表單數(shù)據(jù)驗(yàn)證
        content = self.cleaned_data.get("content")
        if len(content) < 10:
            raise forms.ValidationError("內(nèi)容長(zhǎng)度太短了!")
        content = mistune.markdown(content)
        return content

class Meta:  # 規(guī)定類的元數(shù)據(jù)
        model = Comment  
        fields = ["nickname", "email", "website", "content"]

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/45056.html

相關(guān)文章

  • Django數(shù)據(jù)驗(yàn)證(validating objects)

    摘要:在中,對(duì)數(shù)據(jù)進(jìn)行校驗(yàn)有兩種方式一種是通過(guò)中校驗(yàn),一種是通過(guò)校驗(yàn)。所有內(nèi)容都是基于的官網(wǎng)文檔整理而來(lái)數(shù)據(jù)校驗(yàn)的觸發(fā)中的校驗(yàn)是通過(guò)調(diào)用方法來(lái)執(zhí)行的。注意值得注意的是上面多次提到,在執(zhí)行方法的時(shí)候,是不會(huì)進(jìn)行數(shù)據(jù)校驗(yàn)的。 在Django中,對(duì)數(shù)據(jù)進(jìn)行校驗(yàn)有兩種方式:一種是通過(guò)Form中校驗(yàn),一種是通過(guò)Model校驗(yàn)。在次,我對(duì)Model中的校驗(yàn)方法做下記錄。 所有內(nèi)容都是基于Django1....

    張漢慶 評(píng)論0 收藏0
  • flask 爬坑指南(一)如何開(kāi)始一個(gè)flask應(yīng)用

    摘要:前言去年十月開(kāi)始學(xué)習(xí)一開(kāi)始寫(xiě)了一個(gè)的爬蟲(chóng)將自己在過(guò)程中的一些經(jīng)驗(yàn)寫(xiě)了下來(lái)沒(méi)想到那么多人支持。但目前也只是處于能用狀態(tài)。及如何將一個(gè)文件夾下文件變成一個(gè)包呢。而不僅僅是一個(gè)服務(wù)器無(wú)法理解此請(qǐng)求。 前言 去年十月開(kāi)始學(xué)習(xí)python一開(kāi)始寫(xiě)了一個(gè)python的爬蟲(chóng) 將自己在過(guò)程中的一些經(jīng)驗(yàn)寫(xiě)了下來(lái)沒(méi)想到那么多人支 持。之后因?yàn)橐恍?shí)驗(yàn)室的需求就轉(zhuǎn)投python的web開(kāi)發(fā) 一開(kāi)...

    Michael_Lin 評(píng)論0 收藏0
  • Lunar, 一個(gè)Python網(wǎng)絡(luò)框架實(shí)現(xiàn)

    摘要:核心的幾個(gè)組件模板引擎,框架,請(qǐng)求和應(yīng)答的處理還是有一些難度,但是經(jīng)過(guò)一步步的分析和編碼還是能夠完成功能。模板引擎模板引擎是另外一個(gè)比較大和的模塊。 前前后后,大概兩個(gè)月的時(shí)間,lunar這個(gè)項(xiàng)目終于達(dá)到了一個(gè)很高的完整度。 Lunar是一個(gè)Python語(yǔ)言的網(wǎng)絡(luò)框架,類似于Django,F(xiàn)lask,Tornado等當(dāng)下流行的web framework。最初有這個(gè)想法是在大二下學(xué)期,...

    邱勇 評(píng)論0 收藏0
  • django rest framework個(gè)人學(xué)習(xí)筆記(一)————Install

    摘要:本文主要是用來(lái)記錄自己學(xué)習(xí)的過(guò)程。其中可能會(huì)有很多自己的錯(cuò)誤理解。這里主要會(huì)用到的知識(shí)有百度百科阮一峰理解架構(gòu)其余請(qǐng)自行百度。所有的全局設(shè)置都放在的字典中。使用標(biāo)準(zhǔn)的權(quán)限,未認(rèn)證的用戶只讀權(quán)限不要忘記將添加到你的中。 本文主要是用來(lái)記錄自己學(xué)習(xí)django-rest-framework的過(guò)程。其中可能會(huì)有很多自己的錯(cuò)誤理解。 這里主要會(huì)用到的知識(shí)有 1. [django](https:...

    yuxue 評(píng)論0 收藏0
  • django rest framework個(gè)人學(xué)習(xí)筆記(一)————Install

    摘要:本文主要是用來(lái)記錄自己學(xué)習(xí)的過(guò)程。其中可能會(huì)有很多自己的錯(cuò)誤理解。這里主要會(huì)用到的知識(shí)有百度百科阮一峰理解架構(gòu)其余請(qǐng)自行百度。所有的全局設(shè)置都放在的字典中。使用標(biāo)準(zhǔn)的權(quán)限,未認(rèn)證的用戶只讀權(quán)限不要忘記將添加到你的中。 本文主要是用來(lái)記錄自己學(xué)習(xí)django-rest-framework的過(guò)程。其中可能會(huì)有很多自己的錯(cuò)誤理解。 這里主要會(huì)用到的知識(shí)有 1. [django](https:...

    yagami 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<