使用js变量替换Django URL标签中的多个变量

时间:2018-07-19 18:41:50

标签: javascript python django

目前,我的操作方式相对较丑,如下所示:

view.py
def some_plot(request, day, team, month, person):
    data = {
        "day": day,
        "team": team,
        "month": month,
        "person": person
    }
    return render(request, 'some_plot.html', data)

some_plot.html看起来像这样:

let mapObj = {
    day : "{{ day }}",
    team : "{{ team }}",
    month : "{{ month }}",
    person : "{{ person }}"
}

d3.json("{% url "my_view_url" day team month person %}".replace(/day|team|month|person/gi, function(matched){
return mapObj[matched];
}), function(data){ # plot stuff

有一种更有效的方法来获得相同的结果,因为这有点难以理解。

1 个答案:

答案 0 :(得分:0)

例如,我有一个带有名称任务的应用程序,因此要转到我执行的任务的索引http://localhost:8000/task,URL具有名称索引

from django.urls import path

from . import views
app_name = 'task'
urlpatterns = [
    path('', views.index, name='index'),
    path('add_task/', views.add_task, name='add_task'),
    path('add_subtask/<int:task_id>/', views.add_subtask, name='add_subtask'),
]

所以在我的模板中,我可以执行类似的操作来调用第二个URL

var add_task_url = "{% url 'task:index' %}add_task/"

并转到下一个网址

var add_subtask_url = "{% url 'task:index' %}add_subtask/" + '1/' //you can replace '1/' by '{{day}}/' and add others one