django-experiments和Django 1.5:NoReverseMatch错误

时间:2013-04-30 01:08:21

标签: django django-templates ab-testing django-errors

我在django-experiments,nexus和gargoyle中发现了许多与Django 1.5的不兼容性。幸运的是,几乎所有这些都已通过引用第一个参数到“url”模板标签来修复。

我遇到了一些我无法弄清楚的问题 - 当我进入目标网页时,我收到以下错误:

NoReverseMatch at /trial/trial1/
Reverse for 'experiment_goal' with arguments '(u'clicktrynow',)' and keyword arguments '{}' not found.

我在runserver上运行Django 1.5.1和Python 2.7.3。我也可以在Heroku上的Python 2.7.4中重现这一点。

我的目标网页(到达此页面即可完成目标)中包含以下内容:

{% experiment_goal "clicktrynow" %}

此时,experiment_goal模板标签似乎会自动包含experiment / goal.html模板。 experiments / goal.html包含:

<img src="{% url 'experiment_goal' goal_name %}?v={{ random_number }}" height="1" width="1" />

(我已经修改了'experiment_goal'的引用。)

django-experiments app的urlpatterns包含以下行:

url(r'^goal/(?P<goal_name>.*)$', 'record_experiment_goal', name="experiment_goal"),

最后,我与django-experiments相关的settings.py行是:

EXPERIMENTS_REDIS_HOST = get_env_variable('REDISTOGO_URL', default='redis://localhost:6379')
EXPERIMENTS_REDIS_PORT = 6379
EXPERIMENTS_REDIS_DB = 0
INSTALLED_APPS += ('django.contrib.humanize', 'nexus', 'gargoyle', 'experiments', )
MIDDLEWARE_CLASSES += ('experiments.middleware.ExperimentsMiddleware', )
EXPERIMENTS_GOALS = ('clicktrynow', )

我是Django的新手,但所有这一切似乎都应该有效。我错过了什么?

更新:我的项目的urls.py不包含来自django-experiments的urls.py。文档没有说你需要。但也许我应该。调查...

1 个答案:

答案 0 :(得分:0)

django-experiments文档没有提及编辑urls.py,但示例项目显示您需要:

url(r'experiments/', include('experiments.urls')),
url(r'^goal/$', TemplateView.as_view(template_name="goal.html"), name="goal"),