我在我的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>"
答案 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>