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

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

將 Django 驗(yàn)證器與管理員一起使用 - TypeError:

將 Django 驗(yàn)證器與管理員一起使用 - TypeError:

守候你守候我 2021-06-16 14:12:31
所以我有一個(gè)面向客戶的電子商務(wù)應(yīng)用程序,帶有 Django 管理界面。我希望將使用管理員的員工能夠創(chuàng)建用戶。問題是我內(nèi)置的自定義正則表達(dá)式驗(yàn)證僅適用于面向客戶的一側(cè),當(dāng)員工想要使用管理員創(chuàng)建新用戶時(shí),我在嘗試創(chuàng)建用戶時(shí)使用 Django 驗(yàn)證器會(huì)引發(fā)錯(cuò)誤。我想知道(1)是否有一種方法可以重用我的 UserManager 類(繼承自models.Manager)來處理客戶端驗(yàn)證,Django admin 也是如此。如果沒有,那么 (2) 如果我要依賴 Django 驗(yàn)證器,我該如何清理代碼以免拋出以下錯(cuò)誤:TypeError: "object of type 'int' has no len()我做了一些功課試圖解決這個(gè)問題,發(fā)現(xiàn)這個(gè)線程:TypeError: object of type 'int' has no len() error需要幫助這基本上解釋了此示例拋出的錯(cuò)誤是因?yàn)樗噲D在 int 而不是列表上調(diào)用 len() 。我不明白的是,當(dāng)用戶自己注冊(cè)時(shí),為什么我不會(huì)在面向客戶的方面遇到同樣的錯(cuò)誤?無論如何,鑒于我如何設(shè)置我的 UserManager,我無法弄清楚如何實(shí)施該解決方案。我沒有使用 Django Forms 并嘗試使用一些干凈的方法,但我也試圖通過重用我已經(jīng)在 UserManager 中編寫的驗(yàn)證來避免重復(fù)自己。這是我的代碼,感謝您的幫助!模型.pyclass UserManager(models.Manager):    def validation(self, postData, error_validation):    errors = {}    if error_validation == 'register':        if not NAME_REGEX.match(postData['first_name']):            errors['first_name'] = "First name can only contain letters."        if not NAME_REGEX.match(postData['last_name']):            errors['last_name'] = "Last name can only contain letters."        elif User.objects.filter(email=postData['email']):            errors['email'] = "Email already being used."        elif len(postData['password']) < 8:            errors['password'] = "Password must contain 8 or more characters."        elif not postData['password'] == postData['confirm_password']:            errors['password'] = "Both passwords must match!"    if error_validation == 'login':        user = User.objects.filter(email=postData['email'])        if not user or not bcrypt.checkpw(postData['password'].encode(), user[0].password.encode()):            errors['user_login'] = "Invalid credentials."    return errors
查看完整描述

2 回答

?
慕工程0101907

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

您正在IntegerFields 上使用MinLengthValidatorMaxLengthValidator,它將嘗試對(duì)整數(shù)應(yīng)用 len() 函數(shù)。這就是為什么你會(huì)遇到這種錯(cuò)誤。您可以將您的zipcodephone屬性更改為 CharField,或者只是刪除驗(yàn)證器。


查看完整回答
反對(duì) 回復(fù) 2021-06-22
?
qq_遁去的一_1

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

需要注意的一件事是CharField 沒有 min_length 屬性。


因此,作為一種不明智的替代方案,您可以使用 Min/MaxValueValidator Min/MaxValueValidator,而不是使用 Min/MaxLengthValidator。很酷的是,您可以將驗(yàn)證器子類化來處理自定義錯(cuò)誤消息:


模型.py


from django.core.validators import MinValueValidator, MaxValueValidator



class ZipcodeMaxValueValidator(MaxValueValidator):

    message = ("AWWW YEA ERROR!!")


class User(models.Model):

    zipcode = models.IntegerField(validators=[MinValueValidator(99999), ZipcodeMaxValueValidator(99999)]



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

添加回答

舉報(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)