【问题标题】:django-experiments and Django 1.5: NoReverseMatch errordjango-experiments 和 Django 1.5:NoReverseMatch 错误
【发布时间】:2013-04-30 01:08:20
【问题描述】:

我在 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 模板。 Experiments/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。文档并没有说你需要。但也许我应该。正在调查...

【问题讨论】:

  • RE:您的更新,是的,您需要包含任何模式的 URL 才能在 99% 的情况下注册,除非这里有一些魔法。

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-06
    • 2015-10-24
    • 2017-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    相关资源
    最近更新 更多