[英]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.name
和self.lastName
,因此您只能使用上述屬性,而不是self.argName
、 self.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.