【问题标题】:Get variables in datables passed by django获取django传递的datables中的变量
【发布时间】:2015-05-06 06:41:24
【问题描述】:

我在我的 django 应用程序中使用 jquery 数据表。我表中的每一行都有一个与对象一起指向另一个页面的命名 url。 {% url 'obj_details' obj.id %}。当我单击 url 时,我没有找到反向匹配错误。我已经详细检查了这个问题。 url obj_details 是存在于 urls.py 中的命名 url

url(r'^obj/(?P<pk>[\w-]+)/details$', objDetailsView.as_view(), name='obj_details')

datatables 使用另一个视图来获取所需的数据,如下所示

def objdtable(request):

obj_json_tuple = list(Obj.objects.all().values_list("objnum", "ob_field", "date", "price", "field2", "seller", "id"))

return HttpResponse(json.dumps(obj_json_tuple))

我在数据表中显示除 id 之外的所有字段都没有问题。

"columns": [
                   { "": "fields.objnum"},
                   { "": "fields.ob_field" },
                   { "": "fields.date" },
                   { "": "fields.price" },
                   { "": "fields.field2" },
                   { "": "fields.seller" },
           ]

如何将 objdtable 视图返回的 id 作为参数传递给 url obj_details?我已经尝试过{% url 'obj_details' fields.id %}{% url 'obj_details' id %},但两者都没有给出反向匹配发现错误。然后我在数据表中尝试了

"data":
         {
         'bid':fields.id
         }

并将命名的网址更改为链接obj/data/details 我也尝试将数据更改为fields.id,但没有任何效果。如何访问 django 在数据表中传递的变量?我可以在 url 中使用该变量来解决问题。

PS:将 url 更改为 url(r'^/obj/(?P&lt;pk&gt;\d+)/details$, objDetailsView.as_view(), name='obj_details') 但它给了我没有找到反向匹配的错误,如下所示。

NoReverseMatch at /myapp/obj/list/Reverse for 'obj_details' with arguments '('',)' and keyword arguments '{}' not found. 1 pattern(s) tried: ['myapp/obj/(?P<pk>\\d+)/details$']

html模板中的错误在下面粘贴的行中。

"defaultContent": "<a class='btn btn-success btn-sm' href="{% url 'obj_details' id  %} " style='color:white'> <i class='fa fa-eye fa-lg'></i> </a>"

【问题讨论】:

  • 检查你的错误,它说变量 ID 是空的。尝试将变量id 更改为一个数字,仅用于测试目的,例如{% url 'obj_details' 1 %},它应该像那样工作
  • {% url 'obj_details' 1 %} 加载页面但没有数据表。根据控制台,问题在"defaultContent": "&lt;a class='btn btn-success btn-sm' href="/myapp/obj/1/details "style='color:white'&gt; &lt;i class='fa fa-eye fa-lg'&gt;&lt;/i&gt; &lt;/a&gt;" 行中,控制台报告的问题是Uncaught syntax error:unexpected string

标签: django variables datatables jquery-datatables


【解决方案1】:

您的问题是您尝试使用 jQuery 变量来呈现 Django URL。

Object JSON 数据是 jQuery,因此您不能在 {% url 'obj_details' id %} 调用中使用它。

当我遇到这样的问题时,我会这样做:

<script>

    // Let's supose you have your jQuery ID value here
    var id = yourdict.obj.id;
    // Now you have the ID inside a jQuery variable you can do this
    // Generate an URL with an aux ID '000'
    var URL = "{% url 'obj_details'  000  %}"
    URL = URL.replace('000', id)  // Replace the aux ID with the real one

</script>

【讨论】:

  • 感谢您的快速回复,但它仍然显示没有找到反向匹配我尝试将 url 更改为 url(r'^obj/(?P&lt;pk&gt;\d+)/details$', ObjDetailsView.as_view(), name='obj_details'),。 Django 正在尝试模式 [myapp/obj/(?P\\d+)/details$'] 但失败了。
  • 您使用的是哪个版本的 django?你能显示完整的错误日志吗?也许您使用的变量是空的?更新您的帖子并添加它给出的错误,通常会说“No URL match for the url with variables ("",)
  • 我已经更新了这个问题。如问题中所述,该变量未传递给数据表。
  • {% url 'obj_details' id %} 中的变量 id 为空。你从哪里得到 id 的值?尝试将变量 id 更改为一个数字,看看它是否正常工作
  • obj_json_tuple = list(Obj.objects.all().values_list("objnum", "ob_field", "date", "price", "field2", "seller", "id")) 给了我 id 并且它不是空的。我已经使用 ipdb 进行了检查。 { "": "fields.objnum"} 等所有其他变量都可以正常工作。我想要的只是获取数据表中 id 的值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-17
  • 1970-01-01
  • 2021-05-27
相关资源
最近更新 更多