尝试将JSONResponse传递给D3(Django)时出现'NoReverseMatch'错误

时间:2016-01-24 21:57:56

标签: django d3.js django-templates django-views

我有一个名为'基金'的应用程序,有两种模式:基金和表现。绩效跟踪基金。我试图做的是使用D3.js绘制性能图。但是我遇到了这个错误:

   / funds / morning-glory-volatility-fund /

的NoReverseMatch      

使用参数'()'和关键字参数'{}'反转'performance_api'   找到。尝试过1种模式:   [ '资金/(P [\瓦特 - ?] +)/性能/ API']

以下是我用来传递JSONResponse:

的观点
def performance_api(request, fund_slug):
    fund = get_object_or_404(Fund, slug=fund_slug)

    data = Performance.objects.filter(fund__name=fund.name) \
        .extra(select={'month': connections[Performance.objects.db].ops.date_trunc_sql('month', 'date')}) \
        .values('month') \
        .annotate(count_items=Count('id'))
    return JsonResponse(list(data), safe=False)

和我的基金app的urls.py:

url(r'^(?P<fund_slug>[\w-]+)/performance/api', views.performance_api, name='performance_api'),

还有另一个全局urls.py,其中包含我所有应用的网址。但是为了访问broswer中的performance_api,它看起来像这样:'127.168.1.1/funds/fund_slug/perfomance/api'似乎正在起作用。

至于D3代码大约有40行,所以我只发布似乎导致问题的部分:

d3.json("{% url 'performance_api' %}", function(error, data) {
  data.forEach(function(d) {
    d.month = parseDate(d.month);
    d.count_items = +d.count_items;
  });

有关导致此问题的原因以及如何解决问题的任何想法?感谢。

2 个答案:

答案 0 :(得分:2)

您需要在fund_slug代码中提供url

{% url 'performance_api' here_fund_slug %}

答案 1 :(得分:1)

performance_api的网址格式包含一个命名参数(fund_slug)。为了使url标记反转此网址,您需要提供此信息,例如

d3.json("{% url 'performance_api' fund_slug="morning-glory-volatility-fund" %}", function(error, data) { //... }