0

我在 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 模板标签似乎自动包含了 Experiments/goal.html 模板。实验/goal.html 包含:

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

(我已经修复了“experiment_goal”的引用。)

django-experiments 应用程序的 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。文档并没有说你需要。但也许我应该。正在调查...

4

1 回答 1

0

The django-experiments docs don't mention editing urls.py, but the example project shows you that you need to:

url(r'experiments/', include('experiments.urls')),
url(r'^goal/$', TemplateView.as_view(template_name="goal.html"), name="goal"),
于 2013-04-30T01:34:24.623 回答