第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Django自定義表單驗(yàn)證IP地址和域名

Django自定義表單驗(yàn)證IP地址和域名

白衣非少年 2021-03-30 09:02:40
我只是在寫表格。但是我想在上執(zhí)行自定義驗(yàn)證hostname。這if type = A則驗(yàn)證它是其他域名明智的,如果它是type = PTR驗(yàn)證它是IP addres秒。這個(gè)邏輯會(huì)在表單或視圖中完成嗎?RECORD_CHOICES = (     ('A','A'),     ('Cname','CNAME'),     ('PTR', 'PTR'),    )class CacheCheck(forms.Form):    type = forms.TypedChoiceField(choices=formfields.TYPE_CHOICES, initial='FIXED')    record = forms.TypedChoiceField(choices=formfields.RECORD_CHOICES, initial='FIXED')    hostname = forms.CharField(max_length=100)    def clean(self):          cleaned_data = super(CacheCheck, self).clean()        record = cleaned_data.get("record")        if record == "PTR":            hostname = forms.GenericIPAddressField(label=("ip address"))        else record == "A":            hostname = forms.RegexField(label=("hostname"), max_length=31, regex=r'[a-zA-Z0-9-_]*\.[a-zA-Z]{2,6}'傳遞給CacheCheck類的form.Form也是mixin或子類的形式嗎?
查看完整描述

3 回答

?
慕哥6287543

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超10個(gè)贊

clean()為您的表單編寫一個(gè)方法。有關(guān)更多信息,請(qǐng)參見有關(guān)相互依賴的字段的清理和驗(yàn)證的Django文檔。


您的clean方法應(yīng)返回cleaned_data字典。在清洗的方法內(nèi)部,您無法實(shí)例化新的表單字段,但可以驗(yàn)證器。


from django.core.validators import validate_ipv46_address, RegexValidator


validate_hostname = RegexValidator(regex=r'[a-zA-Z0-9-_]*\.[a-zA-Z]{2,6}')


def clean(self):  

    cleaned_data = super(CacheCheck, self).clean()

    record = cleaned_data.get("record")

    hostname = cleaned_data.get(hostname, "")


    if record == "PTR":

        validate_ipv46_address(hostname)

    elif record == "A":

        validate_hostname(hostname)

        # todo: check length of hostname as well


    return cleaned_data

要回答您的其他問題,您的CacheCheck課程是的子類forms.Form。


查看完整回答
反對(duì) 回復(fù) 2021-04-01
?
慕少森

TA貢獻(xiàn)2019條經(jīng)驗(yàn) 獲得超9個(gè)贊

這個(gè)邏輯會(huì)在表單或視圖中完成嗎?

兩個(gè)地方。在客戶端使用javascript進(jìn)行驗(yàn)證,以免造成愚蠢的錯(cuò)誤,導(dǎo)致服務(wù)器資源負(fù)擔(dān)沉重。然后在服務(wù)器端進(jìn)行驗(yàn)證,以避免在數(shù)據(jù)庫中包含錯(cuò)誤的數(shù)據(jù)。

傳遞給CacheCheck類的形式是混入還是子類化的形式?

這是子類化的一種形式。CacheCheck繼承Form。


查看完整回答
反對(duì) 回復(fù) 2021-04-01
  • 3 回答
  • 0 關(guān)注
  • 279 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)