簡體   English   中英

如何將變量傳遞給 FlaskForm 的子類

[英]How to pass variable to subclass of FlaskForm

我有一個派生自 FlaskForm 的類,我需要傳遞我的參數

class User(FlaskForm):    
    def __init__(self, argName, argLastName): 
        super(EditCandidate, self).__init__()
        self.name = argLastName
        self.lastName = argLastName


    name = StringField(default = self.name , validators=[DataRequired(message="Ad xanası doldurulmalıdır."), Length(min=2, max=20, message="Ad min-2, max-20 hərfdən təşkil oluna bilər.")] )
    lastName = StringField(default= self.lastName , validators=[DataRequired(message="Soyad xanası doldurulmalıdır."), Length(min=2, max=20, message="Soyad min-2, max-20 hərfdən təşkil oluna bilər.")] )

但是 Python 給了我這個錯誤:

    name = StringField(default = self.name , validators=[DataRequired(message="Ad xanası doldurulmalıdır."), Length(min=2, max=20, message="Ad min-2, max-20 hərfdən təşkil oluna bilər.")] )
NameError: name 'self' is not defined

如何解決這個問題呢?

Self表示類的實例/對象,並用於訪問其屬性和方法。

您的屬性被定義為self.nameself.lastName ,因此您只能使用上述屬性,而不是self.argNameself.argLastName - 這些作為參數傳遞給函數,不能在函數范圍之外訪問。

StringField()調用中替換它們,它應該可以工作。

編輯:

在這種情況下,這是因為self位於init()方法之外,這意味着如果在初始化函數之外的任何地方使用該詞本身,則該詞本身未定義。 解決方法:縮進name和last name變量,使它們與self.<>屬性出現在同一個縮進處,如下圖

class User(FlaskForm):    
    def __init__(self, argName, argLastName): 
        super(EditCandidate, self).__init__()
        self.name = argLastName
        self.lastName = argLastName

    
        name = StringField(default = self.name , validators=[DataRequired(message="Ad xanası doldurulmalıdır."), Length(min=2, max=20, message="Ad min-2, max-20 hərfdən təşkil oluna bilər.")] )
        lastName = StringField(default= self.lastName , validators=[DataRequired(message="Soyad xanası doldurulmalıdır."), Length(min=2, max=20, message="Soyad min-2, max-20 hərfdən təşkil oluna bilər.")] )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM