这是关于错误的另一个问题:
Reverse for 'dataPoints' with arguments '()' and keyword arguments '{u'loadID': 5}' not found. 1 pattern(s) tried: [u'loads/dataPoints/']
我已经筛选了大量相关帖子,但似乎无法弄清楚发生了什么。问题是这样的:在使用url命名空间的应用程序中,当我尝试将关键字参数传递给url时,视图模板失败并出现上述错误,但是如果我使用位置参数则会起作用。
这就是给我上述错误的原因:
顶级urls.py:
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
...
url(r'^loads/', include(sig.views.data_loads.urls_data_loads, namespace="loads")),
url(r'^authentication/', include(sig.views.authentication.urls_authentication, namespace="authentication")),
url(r'^account/', include(sig.views.account.urls_account, namespace="account")),
)
urls.py for“loads”:
urlpatterns = patterns('',
url(r'^dataPoints', views.DataPoints.as_view(), name='dataPoints')
)
template.html:
<a href="{% url 'loads:dataPoints' loadID=5 %}">points</a>
然后它说它无法找到相反的结果。基于我发现的一些相关主题,我尝试过:
- 尝试没有引号的链接,即{%url loads:dataPoints ...%}(它失败)
- 尝试了不同的正则表达式模式,例如url(r'^ dataPoints(。)*)(仍然无法找到反向)
我可以通过使用位置参数轻松地解决这个问题但是我真的不知道我无法解决这个问题。我之前在应用程序中使用了这样的关键字args,我想知道是否有些东西是因为我使用的是url名称空间?无论是那种,或者更可能的是,我正在做一些完全愚蠢的事情。
编辑:为DataPoints视图添加代码:
class DataPoints(TemplateView):
template_name = "data_loads/templates/dataPoints.html"
def get(self, request):
loadID = request.GET["loadID"]
return self.render_to_response({})
答案 0 :(得分:1)
urlpatterns = patterns('',
url(r'^dataPoints', views.DataPoints.as_view(), name='dataPoints')
)
您修改后的网址不会采用任何参数,而是采用loadID
之前的参数。
所以你看到的行为是正确的。
要使用kwargs,请保持您的网址相同并使用您正在执行的模板
<a href="{% url 'loads:dataPoints' loadID=5 %}">points</a>
答案 1 :(得分:1)
我正在考虑Rohans的回答。
模式r'^dataPoints'
将匹配任何开始的&#39; dataPoints&#39;,包括dataPoints?load=5
,但是&#39;加载&#39;将被添加到request.GET(因此request.GET['load']
是&#39; 5&#39;)。这就是你从未见过像r'^dataPoints?loadID=[0-9]+$
那样的人,因为它不是url模式的工作方式。 Rohans这里的原始答案是正确的,您只需要在urls.py中恢复原始模式以便加载&#39;。如果错误消失,你应该尝试他所建议的并接受他的答案,我相信它会。
答案 2 :(得分:1)
<a href="{% url 'loads:dataPoints' %}?loadID=5">points</a>
最终导致我点击这个帖子的帖子是this one。谢谢,大家,谢谢你。