我一直在为本地侦察小组建立一个网站。出于某种原因,Django中的这个错误仍然存在,我无法理解它来自何处以及如何解决它。
根据回溯的错误在我的index.html页面中:
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
<meta charset="utf-8" />
<meta name="robots" content="index, follow">
<meta name="keywords" content="3rd, Ringwood, scouts, cubs, beavers, hall hire, hire, hall, hut, third">
<meta name="description" content="3rd Ringwood Scout Group - Beavers, Cubs and Scouts. The hut is also a perfect place to hire for other activities.">
<!-- <link rel="dns-prefetch" href="//"> -->
<link rel="icon" href="/static/images/favicon.png" type="image/png" />
<link rel="stylesheet" href="/static/css/style.css" charset="utf-8">
<link rel="stylesheet" href="https://ink.global.ssl.fastly.net/3.1.10/css/font-awesome.min.css" />
<title>3rd Ringwood Scouts</title>
<script type="text/javascript" src="https://ink.global.ssl.fastly.net/3.1.10/js/holder.js"></script>
<script type="text/javascript" src="https://ink.global.ssl.fastly.net/3.1.10/js/ink-all.js"></script>
<script src="https://code.jquery.com/jquery.min.js" charset="utf-8"></script>
</head>
正如所要求的完整追溯:
Environment:
Request Method: GET
Request URL: http://localhost:8080/
Django Version: 1.10.5
Python Version: 2.7.10
Installed Applications:
('flat',
'redactor',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'events',
'information')
Installed Middleware:
('django.middleware.cache.UpdateCacheMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware',
'django.middleware.cache.FetchFromCacheMiddleware')
Template error:
In template /Users/Max/Documents/scouts_backend/templates/index.html, error at line 11
pop from empty list 1 : {% load staticfiles %}
2 : <!DOCTYPE html>
3 : <html>
4 : <head>
5 : <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
6 : <meta charset="utf-8" />
7 : <meta name="robots" content="index, follow">
8 : <meta name="keywords" content="3rd, Ringwood, scouts, cubs, beavers, hall hire, hire, hall, hut, third">
9 : <meta name="description" content="3rd Ringwood Scout Group - Beavers, Cubs and Scouts. The hut is also a perfect place to hire for other activities.">
10 : <!-- <link rel="dns-prefetch" href="//"> -->
11 : <link rel="icon" href="/static/images/favicon.png" typ e="image/png" />
12 : <!--<link rel="stylesheet" href="/static/css/style.css" charset="utf-8"> -->
13 : <link rel="stylesheet" href="https://ink.global.ssl.fastly.net/3.1.10/css/font-awesome.min.css" />
14 : <title>3rd Ringwood Scouts</title>
15 : <script type="text/javascript" src="https://ink.global.ssl.fastly.net/3.1.10/js/holder.js"></script>
16 : <script type="text/javascript" src="https://ink.global.ssl.fastly.net/3.1.10/js/ink-all.js"></script>
17 : <script src="https://code.jquery.com/jquery.min.js" charset="utf-8"></script>
18 : </head>
19 : <body>
20 : {% include "navbar.html" %}
21 : <!-- Begin Content -->
Traceback:
File "/Library/Python/2.7/site-packages/django/core/handlers/exception.py" in inner
39. response = get_response(request)
File "/Library/Python/2.7/site-packages/django/core/handlers/base.py" in _legacy_get_response
249. response = self._get_response(request)
File "/Library/Python/2.7/site-packages/django/core/handlers/base.py" in _get_response
217. response = self.process_exception_by_middleware(e, request)
File "/Library/Python/2.7/site-packages/django/core/handlers/base.py" in _get_response
215. response = response.render()
File "/Library/Python/2.7/site-packages/django/template/response.py" in render
109. self.content = self.rendered_content
File "/Library/Python/2.7/site-packages/django/template/response.py" in rendered_content
86. content = template.render(context, self._request)
File "/Library/Python/2.7/site-packages/django/template/backends/django.py" in render
66. return self.template.render(context)
File "/Library/Python/2.7/site-packages/django/template/base.py" in render
208. return self._render(context)
File "/Library/Python/2.7/site-packages/django/template/base.py" in _render
199. return self.nodelist.render(context)
File "/Library/Python/2.7/site-packages/django/template/base.py" in render
994. bit = node.render_annotated(context)
File "/Library/Python/2.7/site-packages/django/template/base.py" in render_annotated
961. return self.render(context)
File "/Library/Python/2.7/site-packages/django/template/loader_tags.py" in render
210. return template.render(context)
File "/Library/Python/2.7/site-packages/django/template/base.py" in render
210. return self._render(context)
File "/Library/Python/2.7/site-packages/django/template/base.py" in _render
199. return self.nodelist.render(context)
File "/Library/Python/2.7/site-packages/django/template/base.py" in render
994. bit = node.render_annotated(context)
File "/Library/Python/2.7/site-packages/django/template/base.py" in render_annotated
961. return self.render(context)
File "/Library/Python/2.7/site-packages/django/template/defaulttags.py" in render
315. return nodelist.render(context)
File "/Library/Python/2.7/site-packages/django/template/base.py" in render
994. bit = node.render_annotated(context)
File "/Library/Python/2.7/site-packages/django/template/base.py" in render_annotated
961. return self.render(context)
File "/Library/Python/2.7/site-packages/django/template/defaulttags.py" in render
439. url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app)
File "/Library/Python/2.7/site-packages/django/urls/base.py" in reverse
91. return force_text(iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs)))
File "/Library/Python/2.7/site-packages/django/urls/resolvers.py" in _reverse_with_prefix
344. self._populate()
File "/Library/Python/2.7/site-packages/django/urls/resolvers.py" in _populate
209. for name in pattern.reverse_dict:
File "/Library/Python/2.7/site-packages/django/urls/resolvers.py" in reverse_dict
242. self._populate()
File "/Library/Python/2.7/site-packages/django/urls/resolvers.py" in _populate
228. bits = normalize(p_pattern)
File "/Library/Python/2.7/site-packages/django/utils/regex_helper.py" in normalize
110. start = non_capturing_groups.pop()
Exception Type: IndexError at /
Exception Value: pop from empty list
我已经在模板中隔离了这个问题,这里是index.html文件的一部分,其中包含错误:
<body>
{% include "navbar.html" %}
<!-- Begin Content -->
<div class="content-container">
<div id="home" class="content-drawer">
{% include "header.html" %} <!-- This line causes the error -->
<section class="beavers">
header.html中
<section class="welcome">
<div class="ink-grid">
<div class="column-group push-middle">
<div class="xlarge-70 large-70 all-80 align-center push-center">
<img src="https://placeholdit.imgix.net/~text?txtsize=20&txt=Logo&w=75&h=75" />
<h1>------</h1>
<p>Group Scout Leader: <a href="/contact"><strong>-----</strong> -----</a></p>
{% if user.is_authenticated %}
<p><b><a href="">{{ user.username }}</a> | <a href="{% url 'logout' %}">Logout</a></b></p>
{% else %}
<p><b><a href="{% url 'login' %}?next={{request.path}}">Login</a></b></p>
{% endif %}
</div>
</div>
</div>
</section>
urls.py
from django.conf.urls import include, url
from django.contrib import admin
from django.conf import settings
from django.conf.urls.static import static
from django.views.generic import TemplateView
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url('^', include('django.contrib.auth.urls')),
url(r'^groups/', include('events.urls')),
url(r'^', include('information.urls')),
url(r'^$', TemplateView.as_view(template_name='index.html'), name='index'),
url(r'^booking/$', TemplateView.as_view(template_name='static_pages/booking.html'), name='booking'),
url(r'^links/$', TemplateView.as_view(template_name='static_pages/links.html'), name='links'),
url(r'^waiting-list/$', TemplateView.as_view(template_name='static_pages/waiting-list.html'), name='waiting list')
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
events/urls.py
from django.conf.urls import url
from django.views.generic import RedirectView, TemplateView
from . import views
urlpatterns = [
url(r'^$', RedirectView.as_view(pattern_name='index'), name='group_redirect'),
url(r'^events/$', views.event_list, name='event_list'),
url(r'^leaders/$', views.leader_list, name='leader_list'),
url(r'^event/(?P<event_id>[0-9])/$', views.event, name='specific_event'),
url(r'^leader/(?P<leader_id>[0-9)])/$', views.leader, name='specific_leader'),
url(r'^(?P<group_name>[\w-]+)/$', views.group, name='group_home'),
]
信息/ urls.py
from django.conf.urls import url
from django.views.generic import TemplateView
from . import views
urlpatterns = [
url(r'^contact/$', views.contact, name='contact'),
url(r'^contact/success/$', TemplateView.as_view(template_name='contact/success.html'), name='contact_success'),
]
答案 0 :(得分:3)
看起来你在django本身遇到了一个边缘案例错误。
要解决此问题,请在urls.py
中更改此行# pathological pattern:
url(r'^leader/(?P<leader_id>[0-9)])/$', views.leader, name='specific_leader')
# unexpected item in url area! ^
# fixed pattern:
url(r'^leader/(?P<leader_id>[0-9])/$', views.leader, name='specific_leader')
为什么会触发错误? Django尝试将模板标记{% url 'login' %}
反转为实际的登录URL。它遍历所有url模式并执行某种反向正则表达式。
但由于()
在正则表达式中具有特殊含义,因此必须正确处理它们。在这种情况下,您有一个技术上有效(虽然明显不正确)的正则表达式,)
位于意外的位置:[]
组内。
看起来像一个不起眼的bug,显然它没有被django的测试套件覆盖。
django source code评论很好,所以你可以遵循他们的逻辑(即使它不太正确)。
# django/utils/regex_helper.py:111
elif ch == ')':
# This can only be the end of a non-capturing group, since all
# other unescaped parentheses are handled by the grouping
# section later (and the full group is handled there).
#
# We regroup everything inside the capturing group so that it
# can be quantified, if necessary.
start = non_capturing_groups.pop()
答案 1 :(得分:0)
进入这个确切的问题,但我需要)
组中的结束[]
(如此[^)]
)。
逃避它确实有帮助([^\)]
),虽然它不是你期望在正则表达式中做的。