簡體   English   中英

Django | 動態URL內的JS變量

[英]Django | JS variable inside dynamic URL

我正在嘗試使用 Django 在動態 url 中傳遞 javascript 變量。 我有以下路徑

path('task-update/<str:pk>/', updateTask, name='task-update'),

我可以根據 HTML 中的任務 select 檢索我創建的“任務”字段(id、標題、描述...)(這是使用 AJAX 和 Django-REST 框架完成的)。 但是,我在動態 url 中呈現 javascript 值時遇到了一些麻煩

var url = `{% url 'task-update' pk=${activeItem.id} %}`

${activeItem.id}是我遇到問題的地方,我嘗試將它分配給一個變量並將其傳遞給 URL 但它不起作用。

我一直在使用的解決方法是

var url = `http://127.0.0.1:8000/task-update/${activeItem.id}/`

但是我想使用 django 的模板標簽

我發現了一個在大多數情況下可能有效的技巧:

var url = "{% url 'task-update' pk=12345 %}".replace(/12345/, ${activeItem.id});

它很干凈,並且不違反 DRY 原則。

在搜索了相當多之后,這是我找到的最好的整潔的解決方案(也是唯一一個): django-js-urls

只需pip 安裝 django-js-urls並將'js_urls'添加到您的INSTALLED APPS

然后添加只需將JS_URLS添加到您的settings.py文件並輸入您想要使用的路徑的名稱。 就我而言,我只添加了task-update ,它看起來像這樣

JS_URLS = (
    'task-update',
)

然后,您需要做的就是在 URLs 根模塊中添加以下內容

from js_urls.views import JsUrlsView

urlpatterns = [
    # other urls
    url(r'^js-urls/$', JsUrlsView.as_view(), name='js_urls'),
]

並在模板中包含以下js

<script src="{% url 'js_urls' %}" type="text/javascript"></script>

URL 可以使用window.reverse function

var url = window.reverse('task-update', { pk: activeItem.id });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM