У меня есть сериализатор DRF:
class ActivitySerializer(serializers.ModelSerializer):
link = serializers.CharField(source='get_analytic_link', allow_null=True)
class Meta:
model = Activity
fields = ['link',]
В API для просмотра ссылки кликабельны. Однако, когда они передаются в DataTable через конечную точку JSON, они (как и ожидалось) не кликабельны. В обычном Django я бы сделал что-то вроде этого:
<td>{{ activity.get_analytic_link|urlize }}</td>
Как я могу воспроизвести это поведение в DRF, чтобы ссылки можно было щелкнуть?
на каком этапе процесса это будет включено? если я добавлю это в полезную нагрузку JSON, я думаю, что это просто отобразится как строка в браузере, теги <a> и все такое.
Я думаю, вам не следует ничего менять в API, просто продолжайте отправлять URL-адрес и обрабатывайте это на стороне клиента.
Похоже, это работа на внешнем интерфейсе, и вы должны использовать функцию DataTable столбцы.рендер.
Пример:
var responseObj = [
{ "information": "A1", "weblink": "http://www.microsoft.com" },
{ "information": "A2", "weblink": "http://www.yahoo.com" },
{ "information": "A3", "weblink": "http://www.google.com" },
{ "information": "A4", "weblink": "http://www.duckduckgo.com" }
];
$('#example').dataTable({
"data": responseObj,
"columns": [
{ "data": "information" },
{
"data": "weblink",
"render": function(data, type, row, meta){
if (type === 'display'){
data = '<a href = "' + data + '">' + data + '</a>';
}
return data;
}
}
]
});
У меня нет опыта работы с таблицами данных, но разве вы не должны просто обернуть URL-адрес тегом <a>?