Укажите ссылку DRF

У меня есть сериализатор 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, чтобы ссылки можно было щелкнуть?

У меня нет опыта работы с таблицами данных, но разве вы не должны просто обернуть URL-адрес тегом <a>?

Ozgur Akcali 11.04.2019 00:12

на каком этапе процесса это будет включено? если я добавлю это в полезную нагрузку JSON, я думаю, что это просто отобразится как строка в браузере, теги <a> и все такое.

OverflowingTheGlass 11.04.2019 00:16

Я думаю, вам не следует ничего менять в API, просто продолжайте отправлять URL-адрес и обрабатывайте это на стороне клиента.

Ozgur Akcali 11.04.2019 00:17
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
3
3
143
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Похоже, это работа на внешнем интерфейсе, и вы должны использовать функцию 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;
         }
      } 
   ]
});

Другие вопросы по теме