姜戈 |动态内的 JS 变量 URL
Django | JS variable inside dynamic URL
我正在尝试使用 Django 在动态 url 中传递一个 javascript 变量。我有以下路径
path('task-update/<str:pk>/', updateTask, name='task-update'),
我能够检索我创建的“任务”字段(id、标题、描述等),具体取决于我在 HTML 中 select 执行的任务(已完成使用 AJAX 和 Django-REST 框架)。但是,我在渲染动态 urls
中的 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 install 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>
可以通过 window.reverse 函数使用 URL
var url = window.reverse('task-update', { pk: activeItem.id });
我正在尝试使用 Django 在动态 url 中传递一个 javascript 变量。我有以下路径
path('task-update/<str:pk>/', updateTask, name='task-update'),
我能够检索我创建的“任务”字段(id、标题、描述等),具体取决于我在 HTML 中 select 执行的任务(已完成使用 AJAX 和 Django-REST 框架)。但是,我在渲染动态 urls
中的 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 install 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>
可以通过 window.reverse 函数使用 URL
var url = window.reverse('task-update', { pk: activeItem.id });