获取django

时间:2015-05-06 06:41:25

标签: django variables datatables jquery-datatables

我在我的django应用程序中使用jquery数据表。我的表中的每一行都有一个与该对象一起指向另一个页面的URL。 {% url 'obj_details' obj.id %}。当我点击网址时,我发现没有反向匹配发现错误。我已经详细检查了这个问题。 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,但没有任何效果。如何在datatables中访问django传递的变量?我可以在url中使用该变量,以便解决问题。

PS:在将网址更改为url(r'^/obj/(?P<pk>\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>"

1 个答案:

答案 0 :(得分:0)

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

对象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>