【问题标题】:django/python: to access defined constant by equivelent stringdjango/python:通过等效字符串访问定义的常量
【发布时间】:2013-11-16 10:24:22
【问题描述】:

我已经在 django 设置文件中定义了常量

LABEL_NAME = 'xyz'

现在我有字符串'LABEL_NAME' 并希望有其等效的常量定义值,即 'xyz'

我可以通过LABEL_NAME 访问'xyz' 值。但我不知道如何通过与定义常量等效的字符串来访问它。

我来自 PHP 背景并使用 codeIgniter 框架,它提供了像 @CONSTANT('LABEL_NAME') 这样的能力来访问等效的定义常量值。请让我知道我们是否已经在 django/python 中提供了此类设施。即使花了几个小时搜索这个问题,我也无法获得任何帮助。

非常感谢您的任何帮助。

【问题讨论】:

    标签: django python-2.7 django-views django-1.5 django-settings


    【解决方案1】:

    你需要getattr()

    from django.conf import settings
    
    setting_name = "LABEL_NAME"
    print(getattr(settings, setting_name))  
    

    【讨论】:

    • 谢谢@RemcoGerlich。这就是我要找的:)
    【解决方案2】:
    from project import settings
    print settings.LABEL_NAME
    

    from project.settings import *
    print LABEL_NAME
    

    【讨论】:

    • 如果我有'LABEL_NAME' 而不是LABEL_NAME,我如何能够访问它。这有意义吗:)
    • 你不能,'LABEL_NAME' 是一个字符串。你为什么要这样做?详细发布您的案例。
    • 我们不能有任何方法将字符串转换为等效的全局定义常量并获取其值。我不知道 django/python 是否有此功能可用。但如果不是,那么我想知道是什么原因。这是以前没有解决或关注的问题吗?或者可能只是按照我想要的方式做一件愚蠢和愚蠢的事情:)。
    • 你可以这样做eval('LABEL_NAME'),它会输出LABEL_NAME的值。在您的情况下,无需使用eval
    • 谢谢@void。这有帮助:)。但是您介意解释一下我们如何在不使用eval 的情况下拥有它吗?
    猜你喜欢
    • 2015-08-16
    • 1970-01-01
    • 2014-02-09
    • 1970-01-01
    • 2012-10-29
    • 2015-01-13
    • 1970-01-01
    • 2011-09-26
    • 2014-11-23
    相关资源
    最近更新 更多