如何使用modalForm包将javascript整数变量作为主键传递到django url
Posted
技术标签:
【中文标题】如何使用modalForm包将javascript整数变量作为主键传递到django url【英文标题】:How to pass javascript integer variable as primary key into django url with modalForm package 【发布时间】:2019-10-09 01:27:06 【问题描述】:我正在使用数据表 (https://datatables.net/)。单击每一行时,必须将ID
列的值作为主键传递以打开更新表单。
除了将 javascript 变量传递到 django URL 之外,一切正常。
var adresid = 0
$('.dt-edit').each(function ()
$(this).on('click', function(evt)
$this = $(this);
adresid = parseInt($this.parents('tr')[0].cells[13].innerhtml)
)
.modalForm(
formURL: "% url 'adres-update-modal' adresid %"
);
);
我尝试将.replace()
方法用作formURL: "% url 'adres-update-modal' pk %".replace('pk', adresid)
,但这不起作用。
这是我不断收到的错误:
未找到带有参数“(”,)”的“adres-update-modal”的反向。 1 尝试的模式:['adres/(?P[0-9]+)/updatemodal/$']
当我用整数(例如16
)替换网址中的adresid
时,一切正常。
任何帮助将不胜感激
编辑:这是我的表格的 HTML
<table id="masterTable" class="table nowrap" style="width:100%">
<thead>
<tr>
<th></th>
<th></th>
<th>A</th>
<th>B</th>
<th>C</th>
<th>D</th>
<th>E</th>
<th>F</th>
<th>G</th>
<th>H</th>
<th style="text-align:center;width:100px;">Add adres <button type="button" data-func="dt-add" class="btn btn-success btn-xs dt-add modal-adres-create">
<span class="glyphicon glyphicon-plus" aria-hidden="true"></span>
</button></th>
<th class="none">I</th>
<th class="none">J</th>
<th class="none">K</th>
<th class="none">L</th>
<th class="none">M</th>
</tr>
</thead>
<tbody>
% for X in Y %
% for P in Q %
% if X.Z == U %
<tr>
<td></td>
<td></td>
<td>A</td>
<td>B</td>
<td>C</td>
<td>D</td>
<td>E</td>
<td>F</td>
<td>G</td>
<td>H</td>
<td>
<button type="button" class="btn btn-primary btn-xs dt-edit" style="margin-right:16px;">
<span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>
</button>
<button type="button" class="btn btn-danger btn-xs dt-delete">
<span class="glyphicon glyphicon-remove" aria-hidden="true"></span>
</button>
</td>
<td>I</td>
<td>J</td>
<td>K</td>
<td>L</td>
<td>M</td>
</tr>
% endif%
% endfor %
% endfor %
</tbody>
</table>
编辑 2:澄清一下,当我使用 console.log(adresid)
时,它确实返回一个值为 16
的整数。因此,因此我认为问题不会出现在 JavaScript 部分之外,在该部分中,该值必须传递给 formURL
值。
【问题讨论】:
请在显示元素的地方显示html代码 @AmineMessaoudi,我添加了 HTML 表格代码。我的印象是,因为如果我用16
替换 adresid
并且一切正常,这部分并不重要。抱歉,如果我错了。我希望你能想出一些东西:)
在 foor 循环中,您只显示 A、B、C ..... 您需要使用 var
表示法显示 Django 变量。我想这是问题所在,因为您没有从 django 设置 id,这就是它为空的原因。你需要做这样的事情<td> X.id </td>
。
@AmineMessaoudi 这一切都无关紧要。 OP 正在尝试查找一次 URL,然后在 JavaScript 中对其进行自定义。 HTML 的结构与任何东西都无关。
@NinjaChris 你能贴一张所示表格的截图吗?您正在访问第 13 行,因此它的值可能不是有效整数
【参考方案1】:
假设adresid = parseInt($this.parents('tr')[0].cells[13].innerHTML)
正在返回所需的值,我本来希望modalForm
方法位于on
回调中,如下所示:
$('.dt-edit').each(function ()
$(this).on('click', function(evt)
$this = $(this);
adresid = parseInt($this.parents('tr')[0].cells[13].innerHTML);
$('.adres-update-modal').modalForm(
formURL: "% url 'adres-update-modal' adresid %"
);
);
);
这将是获得点击行的正确值的唯一方法
【讨论】:
感谢您的回答!不幸的是,你的建议没有奏效。它仍然返回相同的错误消息Reverse for 'adres-update-modal' with arguments '('',)' not found. 1 pattern(s) tried: ['adres/(?P<pk>[0-9]+)/updatemodal/$']
以上是关于如何使用modalForm包将javascript整数变量作为主键传递到django url的主要内容,如果未能解决你的问题,请参考以下文章
如何遍历 Excel 文件并使用 SSIS 包将它们加载到数据库中?
如何使用 DRF djangorestframework-simplejwt 包将 JWT 令牌存储在 HttpOnly cookie 中?