[英]django reverse match problems
我一直在试图弄清楚为什么我会遇到麻烦。 一切似乎都很好,其他URL反向都没有问题。 当我手动输入URL时,页面显示正常。
这是导致问题的模板标记: {% url 'schedule:calendar' %}
这是urls.py:
app_name = 'schedule'
urlpatterns = [
url(r'^$', login_required(views.CalendarView.as_view(), login_url='/login/'), name='calendar'),
]
我认为这不是必需的,但是我的视图文件中仅包含以下内容:
class CalendarView(TemplateView):
template_name = 'schedule/index.html'
def get_context_data(self, **kwargs):
context = super(CalendarView, self).get_context_data(**kwargs)
context['template'] = 'calendar_view'
return context
我完全看不到命名冲突,但是,当我在模板中的任何地方放置{% url 'schedule:calendar' %}
时,即使模板页面中仅有这件事,它也会引发错误。
这是错误:
Environment:
Request Method: GET Request URL: http://127.0.0.1:8000/schedule/
Django Version: 1.10.3 Python Version: 3.5.2 Installed Applications: ['footables', 'floppyforms', 'djangobower', 'custom_user', 'bootstrap3_datetime', 'widget_tweaks', 'schedule.apps.ScheduleConfig', 'customers.apps.CustomersConfig', 'employees.apps.EmployeesConfig', 'jobs.apps.JobsConfig', 'frontend.apps.FrontendConfig', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'rest_framework', 'mptt'] Installed Middleware: ['django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware']
Template error: In template /home/poduck/PycharmProjects/mobileautorepair/schedule/templates/schedule/index.html, error at line 0 Reverse for '' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: [] 1 : {% extends 'frontend/base.html' %}{% load staticfiles %}{% block style %} 2 : <link rel='stylesheet' href='{% static 'fullcalendar/dist/fullcalendar.min.css' %}'/>{% endblock %} 3 : {% block title %}Schedule{% endblock %} 4 : {% block body %} 5 : <div class="container"> 6 : <div id="calendar"></div> 7 : </div> 8 : {% endblock %} 9 : {% block script %} 10 : <script src="{% static 'fullcalendar/dist/fullcalendar.min.js' %}"></script>
Traceback:
File "/home/poduck/virtualpython3/lib/python3.5/site-packages/django/core/handlers/exception.py" in inner
39. response = get_response(request)
File "/home/poduck/virtualpython3/lib/python3.5/site-packages/django/core/handlers/base.py" in _get_response
217. response = self.process_exception_by_middleware(e, request)
File "/home/poduck/virtualpython3/lib/python3.5/site-packages/django/core/handlers/base.py" in _get_response
215. response = response.render()
File "/home/poduck/virtualpython3/lib/python3.5/site-packages/django/template/response.py" in render
109. self.content = self.rendered_content
File "/home/poduck/virtualpython3/lib/python3.5/site-packages/django/template/response.py" in rendered_content
86. content = template.render(context, self._request)
File "/home/poduck/virtualpython3/lib/python3.5/site-packages/django/template/backends/django.py" in render
66. return self.template.render(context)
File "/home/poduck/virtualpython3/lib/python3.5/site-packages/django/template/base.py" in render
208. return self._render(context)
File "/home/poduck/virtualpython3/lib/python3.5/site-packages/django/template/base.py" in _render
199. return self.nodelist.render(context)
File "/home/poduck/virtualpython3/lib/python3.5/site-packages/django/template/base.py" in render
994. bit = node.render_annotated(context)
File "/home/poduck/virtualpython3/lib/python3.5/site-packages/django/template/base.py" in render_annotated
961. return self.render(context)
File "/home/poduck/virtualpython3/lib/python3.5/site-packages/django/template/loader_tags.py" in render
174. return compiled_parent._render(context)
File "/home/poduck/virtualpython3/lib/python3.5/site-packages/django/template/base.py" in _render
199. return self.nodelist.render(context)
File "/home/poduck/virtualpython3/lib/python3.5/site-packages/django/template/base.py" in render
994. bit = node.render_annotated(context)
File "/home/poduck/virtualpython3/lib/python3.5/site-packages/django/template/base.py" in render_annotated
961. return self.render(context)
File "/home/poduck/virtualpython3/lib/python3.5/site-packages/django/template/defaulttags.py" in render
439. url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app)
File "/home/poduck/virtualpython3/lib/python3.5/site-packages/django/urls/base.py" in reverse
91. return force_text(iri_to_uri(resolver._reverse_with_prefix(view, prefix,
*args, **kwargs)))
File "/home/poduck/virtualpython3/lib/python3.5/site-packages/django/urls/resolvers.py" in _reverse_with_prefix
392. (lookup_view_s, args, kwargs, len(patterns), patterns)
Exception Type: NoReverseMatch at /schedule/ Exception Value: Reverse for '' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: []
您是否可以按模式顺序发布调试信息(只需输入错误的url,Django就会在其中“调试”显示)。 – Artem Bernatskyi
感谢Artem Bernatskyi的评论,我弄清楚了。 我有用于数据的API,并且该api的urls.py文件中存在名称空间冲突。 它也有app_name='schedule'
。 我重命名了,现在一切正常。
对于有相同问题的任何人,如果仅在所有代码中搜索要反向匹配的名称,则可能是最快的。 确保它们没有出现在另一个urls.py文件中。
谢谢Artem。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.