在settings.py中,我从环境中得到var:
ROBOTS_STR = os.environ.get('DJANGO_ROBOTS_STR')
我的env var在文件中设置,如下所示:
DJANGO_ROBOTS_STR=User-agent: *\nDisallow: /admin\nDisallow: /api
问题是在视图中,当我获得settings.ROBOTS_STR时,字符串的值已被自动转义。它是:User-agent: *\\nDisallow: /admin\\nDisallow: /api
如何更改此行为?请注意,我使用的是Python 3.3
答案 0 :(得分: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'
答案 1 :(得分:0)
您可以尝试使用$'xxxxxx'
设置env var:
$ 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