【问题标题】:Reverse for 'export2' with no arguments not found未找到没有参数的“export2”反向
【发布时间】:2019-08-03 17:51:12
【问题描述】:

我有与此相同的代码,但显然正在调用不同的视图。该代码有效,但由于某种原因,我不断收到此错误。我是 django 2.1 的新手,很抱歉,如果这是一个简单的修复。

views.py

def export_view(request,builddata=None):
  print(builddata)
  buildings = BuildingSearch.getBuildingString()
  return render(request, 'dashboard/export.html',{'buildlist': buildings,'builddata':builddata})

urls.py

urlpatterns = [
   path('export/<slug:builddata>/', views.export_view, name='export2'),
   path('export/', views.export_view, name='export'),
]+ static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

export.html

var times = ($("span#stringtime").text()).replace(" ","");
window.location.href = "{% url 'export2' %}/" + times + "/";

当我尝试访问 localhost:8000/export/('export' url)时出现此错误

【问题讨论】:

  • 错误是什么?

标签: javascript python django templates


【解决方案1】:

您的问题是您在模板中使用了{% url 'export2' %}。但是在您的 urlpatterns 中,export2 的 url 的配置为:

path('export/<slug:builddata>/', views.export_view, name='export2'),

此模式需要 slug。所以在调用 url 时传递一些内容:

{% url 'export2' <something> %}

【讨论】:

    【解决方案2】:

    由于 url export2 期待 builddata 因此,您必须在 {% url %} 中传递 builddata 的值才能获得反向匹配。

    window.location.href = "{% url 'export2' builddata='sample' %}";
    

    从您分享的代码中,我可以看出您想在builddata 中传递times 值。而times是一个js变量。

    所以你可以用它在{% url %}中注入js变量。

    var destinationUrl = "{% url 'export2' builddata=123321 %}".replace((/123321/, times.toString());
    window.location.href = destinationUrl;
    
    // END
    

    【讨论】:

    • 修复了这个问题!谢谢!!
    • 欢迎您@麦迪逊。如果对您有帮助,请将答案标记为已接受。
    猜你喜欢
    • 2019-04-14
    • 1970-01-01
    • 2021-11-09
    • 2019-09-14
    • 2020-03-05
    • 2021-03-01
    • 2021-03-13
    • 2018-12-28
    • 2010-12-22
    相关资源
    最近更新 更多