2014-10-02 42 views
0

settings.py中,我得到VAR从环境是这样的:如何从环境变量中删除自动转义?

ROBOTS_STR = os.environ.get('DJANGO_ROBOTS_STR') 

我的环境变量被设置在一个文件中,看起来像:

DJANGO_ROBOTS_STR=User-agent: *\nDisallow: /admin\nDisallow: /api 

的问题是,在视图中,当我得到settings.ROBOTS_STR,字符串的值已被自动转义。它是:User-agent: *\\nDisallow: /admin\\nDisallow: /api

我该如何改变这种行为?请注意,我使用Python 3.3

回答

0

你可以尝试设置的环境变量与$'xxxxxx'

$ export DJANGO_ROBOTS_STR=$'User-agent: *\nDisallow: /admin\nDisallow: /api' 

>>> import os 
>>> os.environ.get('DJANGO_ROBOTS_STR') 
'User-agent: *\nDisallow: /admin\nDisallow: /api' 
>>> print os.environ.get('DJANGO_ROBOTS_STR') 
User-agent: * 
Disallow: /admin 
Disallow: /api 
+0

谢谢,但我不能选择如何设置var或进行导出。我的env var只能在文件中声明。我试图把$''语法放在文件中,但它不起作用。 – 2014-10-02 04:49:31

1

string-escape对其进行解码:

>>> os.environ.get('DJANGO_ROBOTS_STR') 
'User-agent: *\\nDisallow: /admin\\nDisallow: /api' 
>>> os.environ.get('DJANGO_ROBOTS_STR').decode('string-escape') 
'User-agent: *\nDisallow: /admin\nDisallow: /api' 
>>> print(os.environ.get('DJANGO_ROBOTS_STR')) 
User-agent: *\nDisallow: /admin\nDisallow: /api 
>>> print(os.environ.get('DJANGO_ROBOTS_STR').decode('string-escape')) 
User-agent: * 
Disallow: /admin 
Disallow: /api 

对于Python 3,先对其进行编码,然后解码它:

>>> os.environ.get('DJANGO_ROBOTS_STR').encode('latin1').decode('unicode_escape') 
'User-agent: *\nDisallow: /admin\nDisallow: /api' 
+0

'AttributeError:'str'对象没有属性'decode''(Python3) – 2014-10-02 05:17:41