gpt4 book ai didi

django - 为什么 Django 项目 URL 并非都对 Django 测试客户端可用?

转载 作者:行者123 更新时间:2023-12-04 06:47:45 25 4
gpt4 key购买 nike

我一直在尝试将 django-lean 应用程序添加到我的项目中。
django-lean 应用程序不在我正在处理的项目中,它在 PYTHONPATH 中。

我一直无法通过 django-lean 测试。

似乎问题在于 TestCase 为 url 定义了一个值:

 urls = 'django_lean.experiments.tests.urls'

据我所知,测试只获取位于@'django_lean.experiments.tests.urls' 的 url,但不是
来自项目其余部分的网址。

这会导致错误消息,例如:
NoReverseMatch: Reverse for 'index' with arguments '()' and keyword arguments '{}' not found.

这些是由项目中的 {% url %} 模板标签触发的。

如何确保项目的所有 url 都可用于测试?

编辑:
有人给我看了一个脚本来打印可见的 URL:
import urls

def show_urls(urllist, depth=0):
for entry in urllist:
print " " * depth, entry.regex.pattern
if hasattr(entry, 'url_patterns'):
show_urls(entry.url_patterns, depth + 1)

我从 调用了这个脚本ipdb ,这是输出:
   ipdb> import urls
ipdb> show_urls(urls.urlpatterns)
^test-experiment/(?P<experiment_name>.*)$
^test-clientsideexperiment/(?P<experiment_name>.*)$
^admin/
^(?P<experiment_name>.+)/$
^$
^main-app/
^goal/(?P<goal_name>.*)$
^confirm_human/$

这对应于位于@ 'django_lean.experiments.tests.urls' 的网址
urlpatterns = patterns('django_lean.experiments.tests.views',
url(r'^test-experiment/(?P<experiment_name>.*)$', 'experiment_test'),
url(r'^test-clientsideexperiment/(?P<experiment_name>.*)$', 'clientsideexperiment_test'))

urlpatterns += patterns('',
url(r'^admin/', include('django_lean.experiments.admin_urls')),
url(r'^main-app/', include('django_lean.experiments.urls')),

我遇到的问题是我的测试全部失败,因为来自项目中其他应用程序的命名 url 被 URL 模板标签调用,测试无法访问。

我正在使用 Django 1.2.1 运行 Python 2.7

最佳答案

解决方案非常简单。只需将主项目中的 URL 导入应用程序的 urls.py。

from forum.urls import urlpatterns

或者更通用的解决方案:
from settings import ROOT_URLCONF as project_urls
urlpatterns = __import__('forum.urls').urls.urlpatterns

关于django - 为什么 Django 项目 URL 并非都对 Django 测试客户端可用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3532695/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com