我想使用不同的robots.txt
文件,具体取决于我的服务器是生产还是开发。
为此,我想在urls.py
:
urlpatterns = patterns('',
// usual patterns here
)
if settings.IS_PRODUCTION:
urlpatterns.append((r'^robots\.txt$', direct_to_template, {'template': 'robots_production.txt', 'mimetype': 'text/plain'}))
else:
urlpatterns.append((r'^robots\.txt$', direct_to_template, {'template': 'robots_dev.txt', 'mimetype': 'text/plain'}))
但是,这不起作用,因为我没有正确使用patterns
对象:我得到AttributeError at /robots.txt - 'tuple' object has no attribute 'resolve'
。
如何在Django中正确执行此操作?
答案 0 :(得分:9)
试试这个:
if settings.IS_PRODUCTION:
additional_settings = patterns('',
(r'^robots\.txt$', direct_to_template, {'template': 'robots_production.txt', 'mimetype': 'text/plain'}),
)
else:
additional_settings = patterns('',
(r'^robots\.txt$', direct_to_template, {'template': 'robots_dev.txt', 'mimetype': 'text/plain'}),
)
urlpatterns += additional_settings
由于您希望附加tuple
种类型,append
不起作用
此外,pattern()
会为您调用urlresolver
。在你的情况下,你不是,因此错误。
答案 1 :(得分:0)
在 Django 1.8 及更高版本中,添加 URL 很简单:
if settings.IS_PRODUCTION:
urlpatterns += [
url(r'^robots\.txt$', direct_to_template, {'template': 'robots_production.txt', 'mimetype': 'text/plain'}),
]