【发布时间】:2019-08-31 18:45:47
【问题描述】:
我正在使用 AJAX 通过 dataTable 刷新模板中的表格。 当我从 AJAX 调用 (json) 获得结果时,我使用“列”来设置每一行。在其中一行中,我想创建一个指向另一个视图的 Django URL。
到目前为止我尝试过的方法似乎不起作用
function refreshData(event_ref) {
var table = $('#datatable').dataTable({
'processing': true,
'serverSide': false,
'responsive': true,
'destroy': true,
'ajax': {
'type': "GET",
'url': "{% url 'events:index' %}",
'dataSrc': ""
},
'columns': [
{ "data": "pk", render: function (pk) { return '<input type="checkbox" id="check_' + pk + '" name="check_all">'} },
{ "data": "fields.date_time" },
{ "data": "pk", render: function (pk) { return "<a href='{% url 'events:event' " + pk + "%}'>Click me</a>" }}
],
'order': [[ 2, "desc" ]],
'columnDefs': [ {
'targets': [0, 8], // column index (start from 0)
'orderable': false, // set orderable false for selected columns
}],
'scroller': {
loadingIndicator: true
}
});
}
问题出在一行
{ "data": "pk", render: function (pk) { return "<a href='{% url 'events:event' " + pk + "%}'>Click me</a>" }}
我得到的是这个, 未找到带有参数“(”+ pk+“,)”的“事件”的反向。尝试了 1 种模式:['events/event/(?P[0-9]+)/']
我的 urls.py 文件是这个
url('event/(?P<event_id>[0-9]+)/', views.event, name='event'),
我的 view.py 就是这个
def index(request):
latest_event_list = events.objects.order_by('-date_time')
if request.is_ajax():
json = serializers.serialize('json', latest_event_list)
return HttpResponse(json, content_type='application/json')
template = loader.get_template('events/index.html')
context = {
'app_name': "events",
'page_name': "real-time",
'latest_event_list': latest_event_list,
'total_events': len(latest_event_list)
}
return HttpResponse(template.render(context, request))
def event(request, event_id):
latest_event_list = events.objects.order_by('-date_time')[:5]
template = loader.get_template('events/event.html')
context = {
'app_name': "events",
'page_name': "archive",
'latest_event_list': latest_event_list,
}
return HttpResponse(template.render(context, request))
如何使用来自 AJAX 调用的值创建 Django URL?
【问题讨论】:
标签: ajax django django-templates