Django我不能在模式中为每个带有ajax的字段添加按钮

Posted

技术标签:

【中文标题】Django我不能在模式中为每个带有ajax的字段添加按钮【英文标题】:Django i cannot add button in modal for each field with ajax 【发布时间】:2019-10-13 00:11:43 【问题描述】:

我正在尝试在我的表格中放置一个按钮,但我无法成功

我收到一个错误 “使用关键字参数 ''pk': '+field.id+'' 反转 'editare-agenda'。尝试了 1 种模式:['dashboard/editare\-agenda/(?P[0- 9]+)$']"

如果我输入一个数字而不是 +field.id+ 正在工作。如果我测试警报(field.id),我会收到 id。写 % url 'dasboard:editare-agenda' pk=field.id % 有什么问题,但我找不到解决方案。

这是我的 urls.py:

path('editare-agenda/', editare_agenda, name="editare-agenda"),

** "int" = int -> 因为他消失了,所以我不能在 url 路径中写入 int

 $.ajax(
    data: values,
    method:"POST",
    url: destinatie,
    contenttType: 'application/json',
    success: function(data)
        var content ="";
        $.each(data.agenda, function(i, field)
            content += '<tr class="text-center">';
            content += '<td>'+field.denumire_unitate+'</td>';
            content += '<td>'+field.sectia+'</td>';
            content += '<td>'+field.telefon+'</td>';
            content += '<td>'+field.pers_contact+'</td>';
            content += '<td>'+field.adresa+'</td>';
            content += '<td><a href="% url "dashboard:editare-agenda" pk='+field.id+'%"><button type="button" class="btn btn-sm" style="border-radius: 5px;margin: 1px;"><i class="fas fa-edit fa-lg" style="color: blue"></i></button></a></td>';
            content += '</tr>';
    );
    $('#tabela_agenda').html(content);

);

【问题讨论】:

你不能把 js 中的 id 放到 django 模板代码中。你可以这样做。http://example.com/url/?pk=1 我在模板中没有 django 表单我只有一个表格
.....
你应该编辑你的网址 @shourav 谢谢!正在工作..但不是最好的选择。例如,我当前的 url 是 localhost:8000/dashboard/edit/1 如果我更改 runserver 端口,该 url 将不再工作 【参考方案1】:

您可以更改您的网址条目

path('editare-agenda/', editare_agenda, name="editare-agenda"),

在模板中

content += '<td><a href="% url "dashboard:editare-agenda" %?id='+field.id+'"><button type="button" tclass="btn btn-sm" style="border-radius: 5px;margin: 1px;"><i class="fas fa-edit fa-lg" style="color: blue"></i></button></a></td>';

在视野中

def editare_agenda(request):
    field_id = request.GET.get('id', None)
     # Now you can use field id as pk
    .....

【讨论】:

【参考方案2】:
content += '<td><a href="% url "dashboard:editare-agenda" pk=field.id %"><button type="button" tclass="btn btn-sm" style="border-radius: 5px;margin: 1px;"><i class="fas fa-edit fa-lg" style="color: blue"></i></button></a></td>';

path('editare-agenda/<int:pk>', editare_agenda, name="editare-agenda"),

【讨论】:

以上是关于Django我不能在模式中为每个带有ajax的字段添加按钮的主要内容,如果未能解决你的问题,请参考以下文章

两个外键字段,正好一个被设置为一个值,另一个在 MySQL 数据库的 django 模型中为空

带有 postgres 的 Django 的非关系数据库模式

ModelForm 上的 Django 和字段集

Django - 带有 ModelForm 的属性和重新定义的字段?

CodeIgniter 在带有 ajax 回调的表单字段旁边单独显示错误

Django admin - 如何在自定义管理表单中为多对多字段添加绿色加号