繁体   English   中英

在Pylons中的另一个动作中引用静态方法中的变量

[英]Referencing variable from static method inside another action in Pylons

我有:

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动作内的引荐来源,但我不断得到:'function'对象没有属性'referrer'。 有任何想法吗?

另外,这是获取引荐来源网址的正确方法吗?

它是detect_referral()内的局部变量,因此其生存期受限于方法的执行时间。 在方法调用之前和方法返回之后,局部变量根本不存在。 (您甚至似乎都没有调用该方法,因此局部变量在程序执行的任何时候都不存在。)

很可能您不想在这里使用静态方法。 (您几乎从不需要Python中的静态方法。我不记得我曾经使用过一种方法。)也许您只需要一个class属性:

class ArticleController(SubbaseController):
    referrer = request.META.get('HTTP_REFERRER', '')
    def view(self):
        c.referral = self.referrer
        return render('/article.mako')

注意,类主体在类定义时执行一次。

您不是从detect_referral返回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', '')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM