【发布时间】:2017-03-15 04:42:38
【问题描述】:
我是一个初学者,在处理 django slug url 系统和这些 NoReverseMatch 错误时遇到了困难,即使在阅读了文档之后,这些错误对我来说也毫无意义。
我有一个 django 项目。在其中一个视图中,我将 geoJSON 功能列表传递到模板中,并将它们显示在地图上。我想让每个功能都充当一个可点击的“链接”,指向将显示有关它的内容的视图。以下是模板的一部分,其中包含我要单击的那些功能:
//part of the template:
<script type="text/javascript">
...
function onEachFeature(feature, layer) {
layer.on('click', function (e) {
window.location.href = "{% url 'polls:areadetail' feature.properties.myslug%}";
});
}
(我已经确认 feature.properties.myslug 实际上确实包含我想要的 slug)。
我想去的url模式:
urlpatterns = [...
url(r'^areadetail/(?P<areaslug>[-\w]+)/$', views.AreaDetail, name='areadetail'),]
以及与之相关的观点:
def AreaDetail(request, areaslug):
area = get_object_or_404(Area, nameslug=areaslug)
return render(request, 'polls/areadetail.html', {'area':area})
我遇到的问题是,通过执行我显示的操作并将该 url 引用放置在我上面显示的那个模板中,我希望能够点击,该模板甚至根本不起作用,给我一个“错误”模板渲染期间的整页错误信息以:
开头NoReverseMatch 在 /polls/areas/ 未找到带有参数 '('',)' 和关键字参数 '{}' 的 'areadetail' 的反向操作。尝试了 1 种模式:[u'polls/areadetail/(?P[-\w]+)/$']
任何帮助将不胜感激
编辑第 1 部分:正如我在回应 falsetru 时所说,我确信 feature.properties.myslug 实际上有一个 slug 表达式。
EDIT2:根据我在 django 票证中发现的内容,我在 urls.py 中对 url 正则表达式进行了细微更改,从 (?P<areaslug>[-\w]+)/$ 到 (?P<areaslug>[-\w]+)?/$,现在错误是:
找不到页面 (404) 请求方式:GET 请求地址:http://127.0.0.1:8000/polls/areadetail// 发起者:polls.views.AreaDetail
是否有可能因为"{% url 'polls:areadetail' feature.properties.myslug%}" 位在 javascript 中,所以没有正确插入该 feature.properties.myslug?像这里需要某种括号吗?
【问题讨论】:
-
显然
feature.properties.myslug正在评估为None。
标签: python django django-views django-urls