如何使用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,这就是它为空的原因。你需要做这样的事情&lt;td&gt; X.id &lt;/td&gt; @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&lt;pk&gt;[0-9]+)/updatemodal/$']

以上是关于如何使用modalForm包将javascript整数变量作为主键传递到django url的主要内容,如果未能解决你的问题,请参考以下文章

Django之ModalForm

如何使用路径提供程序包将颤动屏幕截图保存到我的桌面

如何遍历 Excel 文件并使用 SSIS 包将它们加载到数据库中?

如何使用 DRF djangorestframework-simplejwt 包将 JWT 令牌存储在 HttpOnly cookie 中?

如何使用新的 js 0.6.0 包将 Dart 类映射到 JS“类”?

如何使用 R 中的 TM 包将我的语料库元数据附加到我的 dtm 数据帧导出中