[英]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.