我有:
class ArticleController(SubbaseController):
def view(self):
c.referral = self.detect_referral.referrer
return render('/article.mako')
@staticmethod
def detect_referral():
referrer = request.META.get('HTTP_REFERRER', '')
我正在尝试从detect_referral静态方法引用view动作中的referrer,但我不断得到:'function'对象没有属性'referrer'。有什么想法吗?
另外,这是获取推荐人的正确方法吗?
答案 0 :(得分:0)
它是detect_referral()
内的局部变量,因此其生命周期仅限于方法的执行时间。在调用方法之前和方法返回之后,本地变量根本就不存在。 (您甚至似乎都没有调用该方法,因此本地变量在您的程序执行时都不存在。)
很可能你不想在这里使用静态方法。 (你几乎不想在Python中使用静态方法。我不记得曾经使用过。)也许你需要的只是一个类属性:
class ArticleController(SubbaseController):
referrer = request.META.get('HTTP_REFERRER', '')
def view(self):
c.referral = self.referrer
return render('/article.mako')
请注意,类主体在类定义时执行一次。
答案 1 :(得分:0)
您没有从referrer
返回detect_referral
,而detect_referral
不是属性,因此您无法使用该语法。
class ArticleController(BaseController):
def view(self):
c.referral = self.detect_referral()
return render('/article.mako')
@staticmethod
def detect_referral():
return request.META.get('HTTP_REFERRER', '')