姜戈 |动态 URL 中的 JS 变量
Posted
技术标签:
【中文标题】姜戈 |动态 URL 中的 JS 变量【英文标题】:Django | JS variable inside dynamic URL 【发布时间】:2021-07-02 18:26:48 【问题描述】:我正在尝试使用 Django 在动态 url 中传递一个 javascript 变量。我有以下路径
path('task-update/<str:pk>/', updateTask, name='task-update'),
我可以根据我在 html 中选择的任务(使用 AJAX 和 Django-REST 框架完成)来检索我创建的“任务”字段(id、标题、描述...)。但是,我在动态 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 的模板标签
【问题讨论】:
【参考方案1】:在搜索了很多之后,这是我找到的最好的整洁的解决方案(也是唯一一个):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 );
【讨论】:
【参考方案2】:我发现了一个可能在大多数情况下都有效的技巧:
var url = "% url 'task-update' pk=12345 %".replace(/12345/, $activeItem.id);
干净,不违反 DRY 原则。
【讨论】:
谢谢,binpy。这个解决方案似乎不起作用,它似乎干扰了我的 javascript。我正在使用 Django REST Framework 来更新一些值,但似乎没有工作。我找到了一个使用 django-js-urls 的解决方案(贴在下面)以上是关于姜戈 |动态 URL 中的 JS 变量的主要内容,如果未能解决你的问题,请参考以下文章
姜戈。如何将下一个变量传递给 auth_views.login