6

我想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 中正确执行此操作?

4

2 回答 2

11

尝试这个:

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。在你的情况下你不是,因此错误。

于 2013-06-14T15:08:12.527 回答
0

在 Django 1.8 及更高版本中,添加 URL 很简单:

if settings.IS_PRODUCTION:
    urlpatterns += [
      url(r'^robots\.txt$', direct_to_template, {'template': 'robots_production.txt', 'mimetype': 'text/plain'}),
    ]
于 2021-01-05T15:26:24.087 回答