我尝试在django1.11中测试URL/视图,并不断得到一些似乎与URL名称空间相关的错误。在projects主URL文件中定义的名称空间和在应用程序的URL文件中定义的本地URL名称与我在测试中输入的内容相匹配,并且在模板中看起来也很好。我从看医生那里试过一些东西,但不知道发生了什么。谢谢你的帮助。在
我的URL/视图测试:
from django.test import TestCase, Client
from .models import Course, Step
from django.utils import timezone
from django.core.urlresolvers import reverse, resolve
...
...
class CourseViewsTests(TestCase):
def setUp(self):
self.course = Course.objects.create(
title="Python Testing",
description="Sample description"
)
self.course2 = Course.objects.create(
title="New Course",
description="New course description"
)
self.step = Step.objects.create(
title="Intro to Doctests",
description="Learn to write tests in your docstrings",
course=self.course
)
# self.client = Client()
def test_course_list_view(self):
resp = self.client.get(reverse('courses:list'))
self.assertEqual(resp.status_code, 200)
self.assertIn(self.course, resp.context['courses'])
self.assertIn(self.course2, resp.context['courses'])
我的根urls.py
:
我的“课程”应用程序的urls.py
:
urlpatterns = [
url(r'^$', views.course_list, name="list"),
url(r'(?P<course_pk>\d+)/(?P<step_pk>\d+)/$', views.step_detail, name="step"),
url(r'(?P<pk>\d+)/$', views.course_detail, name="detail"),
]
正在呈现的模板:
{% extends "layout.html" %}
{% block title %}Available Courses{% endblock %}
{% block content %}
<div class="cards">
{% for course in courses %}
<div class="card">
<header><a href="{% url 'courses:detail' pk=course.pk %}">{{ course.title }}</a></header>
<div class="card-copy">
{{ course.description }}
</div>
</div>
{% endfor %}
</div>
{% endblock %}
最后我的回溯:
Traceback (most recent call last):
File "/Users/Adam/Desktop/Treehouse/DjangoBasics/djangobasics/lib/python3.5/site-packages/django/urls/base.py", line 77, in reverse
extra, resolver = resolver.namespace_dict[ns]
KeyError: 'course'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/Adam/Desktop/Treehouse/DjangoBasics/learning_site/courses/tests.py", line 59, in test_course_list_view
resp = self.client.get(reverse('courses:list'))
File "/Users/Adam/Desktop/Treehouse/DjangoBasics/djangobasics/lib/python3.5/site-packages/django/test/client.py", line 536, in get
**extra)
File "/Users/Adam/Desktop/Treehouse/DjangoBasics/djangobasics/lib/python3.5/site-packages/django/test/client.py", line 340, in get
return self.generic('GET', path, secure=secure, **r)
File "/Users/Adam/Desktop/Treehouse/DjangoBasics/djangobasics/lib/python3.5/site-packages/django/test/client.py", line 416, in generic
return self.request(**r)
File "/Users/Adam/Desktop/Treehouse/DjangoBasics/djangobasics/lib/python3.5/site-packages/django/test/client.py", line 501, in request
six.reraise(*exc_info)
File "/Users/Adam/Desktop/Treehouse/DjangoBasics/djangobasics/lib/python3.5/site-packages/django/utils/six.py", line 686, in reraise
raise value
File "/Users/Adam/Desktop/Treehouse/DjangoBasics/djangobasics/lib/python3.5/site-packages/django/core/handlers/exception.py", line 41, in inner
response = get_response(request)
File "/Users/Adam/Desktop/Treehouse/DjangoBasics/djangobasics/lib/python3.5/site-packages/django/core/handlers/base.py", line 187, in _get_response
response = self.process_exception_by_middleware(e, request)
File "/Users/Adam/Desktop/Treehouse/DjangoBasics/djangobasics/lib/python3.5/site-packages/django/core/handlers/base.py", line 185, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/Users/Adam/Desktop/Treehouse/DjangoBasics/learning_site/courses/views.py", line 6, in course_list
return render(request, 'courses/course_list.html', {'courses': courses})
File "/Users/Adam/Desktop/Treehouse/DjangoBasics/djangobasics/lib/python3.5/site-packages/django/shortcuts.py", line 30, in render
content = loader.render_to_string(template_name, context, request, using=using)
File "/Users/Adam/Desktop/Treehouse/DjangoBasics/djangobasics/lib/python3.5/site-packages/django/template/loader.py", line 68, in render_to_string
return template.render(context, request)
File "/Users/Adam/Desktop/Treehouse/DjangoBasics/djangobasics/lib/python3.5/site-packages/django/template/backends/django.py", line 66, in render
return self.template.render(context)
File "/Users/Adam/Desktop/Treehouse/DjangoBasics/djangobasics/lib/python3.5/site-packages/django/template/base.py", line 207, in render
return self._render(context)
File "/Users/Adam/Desktop/Treehouse/DjangoBasics/djangobasics/lib/python3.5/site-packages/django/test/utils.py", line 107, in instrumented_test_render
return self.nodelist.render(context)
File "/Users/Adam/Desktop/Treehouse/DjangoBasics/djangobasics/lib/python3.5/site-packages/django/template/base.py", line 990, in render
bit = node.render_annotated(context)
File "/Users/Adam/Desktop/Treehouse/DjangoBasics/djangobasics/lib/python3.5/site-packages/django/template/base.py", line 957, in render_annotated
return self.render(context)
File "/Users/Adam/Desktop/Treehouse/DjangoBasics/djangobasics/lib/python3.5/site-packages/django/template/loader_tags.py", line 177, in render
return compiled_parent._render(context)
File "/Users/Adam/Desktop/Treehouse/DjangoBasics/djangobasics/lib/python3.5/site-packages/django/test/utils.py", line 107, in instrumented_test_render
return self.nodelist.render(context)
File "/Users/Adam/Desktop/Treehouse/DjangoBasics/djangobasics/lib/python3.5/site-packages/django/template/base.py", line 990, in render
bit = node.render_annotated(context)
File "/Users/Adam/Desktop/Treehouse/DjangoBasics/djangobasics/lib/python3.5/site-packages/django/template/base.py", line 957, in render_annotated
return self.render(context)
File "/Users/Adam/Desktop/Treehouse/DjangoBasics/djangobasics/lib/python3.5/site-packages/django/template/defaulttags.py", line 458, in render
url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app)
File "/Users/Adam/Desktop/Treehouse/DjangoBasics/djangobasics/lib/python3.5/site-packages/django/urls/base.py", line 87, in reverse
raise NoReverseMatch("%s is not a registered namespace" % key)
django.urls.exceptions.NoReverseMatch: 'course' is not a registered namespace
愚蠢的noob问题Django试图呈现我的
layout.html
模板,我从来没有检查过,因为我觉得那里一切都很好,而且我的一个url名称错了。在相关问题 更多 >
编程相关推荐