Как сделать так, чтобы по кликабельной ссылке была только часть текста - PullRequest
0 голосов
/ 22 января 2020

Итак, я разрабатываю приложение django. У меня есть шаблон, который принимает текст в качестве переменной. Я делаю только часть этого текста кликабельной ссылкой. Например, у меня есть текст «Сегодня день рождения Джона Смита», и мне нужно, чтобы «Джон Смит» был href, а другой текст - нет. Можете ли вы помочь мне с этим, пожалуйста.

Ответы [ 5 ]

0 голосов
/ 22 января 2020

Думаю, я могу вызвать функцию js из шаблона с заданной строкой в ​​качестве параметра, не знаю, почему она не пришла мне в голову раньше.

0 голосов
/ 22 января 2020

Вы можете использовать средний текстовый редактор.

поставить эти строки кодов в верхней части вашей страницы

<script src="//cdn.jsdelivr.net/medium-editor/latest/js/medium-editor.min.js"></script>

<link rel="stylesheet" href="//cdn.jsdelivr.net/medium-editor/latest/css/medium-editor.min.css" type="text/css" media="screen" charset="utf-8">

, а эту внизу вашей страницы

<script>var editor = new MediumEditor('.editable');</script>

а затем вставьте «редактируемый» класс в поля формы, которыми вы хотите манипулировать (в форме вашего шаблона), в свой файл forms.py, например:

class form_name(forms.ModelForm):
    class Meta:
        model = model_name
        fields = ('field_name',...)

        widgets = {
            'field_name': forms.Textarea(attrs={'class': 'editable medium-editor-textarea'}),
        }

, с помощью которого вы можете не только сделать некоторые вашей текстовой ссылки, но вы можете сделать больше настроек для вашего вводимого текста, например сделать h2, h3 или сделать текст жирным, itali c, link et c

, но помните, когда вы отображаете данные, которыми вы манипулировали с помощью среднего текстового редактора, вам необходимо добавить | безопасный фильтр к вашему ключу в шаблоне, например так:

{{ key_name|safe }}

проверьте эту ссылку для получения дополнительной информации https://yabwe.github.io/medium-editor/

0 голосов
/ 22 января 2020

Как я понимаю, вы спрашиваете что-то вроде этого.

<h1>Today is <a>John Smith</a>'s birthday</h1>
0 голосов
/ 22 января 2020

Я предполагаю, что кликабельное имя является переменной, а остальное - постоянным текстом. Таким образом, вам нужно будет отобразить шаблон с контекстом, содержащим имя:

name = something # John Smith
url = ... # based on name
context = { "name":  name, "url": url }
return render( request, 'app/birthday.html', context )

Где 'app/birthday.html' может содержать

<p>
Today is <a href="{{url}}">{{name}}</a>'s birthday
</p>

Если генерируемый вами URL действительно относится к операции на вашем собственном сайте вы можете сгенерировать URL, ссылаясь на его имя (в urls.py). Например,

... href="{% url 'myapp:birthday' name %}" ...

или чаще, где то, что было передано, было личным объектом как "person":person

... href="{% url 'myapp:birthday2' person.id %}"> 
      {{person.firstname}} {{person.lastname}} </a>'s birthday
0 голосов
/ 22 января 2020

Вы можете попробовать написать Django Шаблон тега: https://docs.djangoproject.com/en/3.0/howto/custom-template-tags/

Или на уровне View выполнить изменение с помощью строки регулярного выражения, а затем в шаблоне использовать | safe

...