Как реализовать "Читать далее" в Django?
Как реализовать "Читать далее" в Djnago? Допустим у меня есть огромный текст. Для среза слов есть фильтр truncatewords,знаю. Но если кто-то захочет прочитать далее,а текст слишком большой - нужна кнопка или ссылка которая покажет весь текст,но как это сделать я не понимаю. Подскажите пожалуйста!
View отвечающий за вывод статьи на сайте(НЕ СТАТЕЙ,а именно отдельной статьи)
class Post(View):
def get(self,request,post_id):
try:
post = News.objects.get(id__iexact=post_id)
comments = post.comment_set.all()
except News.DoesNotExist:
return render(request,'blog/DoesNotExist.html')
except Http404:
raise HttpResponse('Такого поста нет')
return render(request,'blog/post.html',context={'post':post,'comments':comments})
Ответы (1 шт):
Добавьте во view, которое ответственно за показ страницы с текстом параметр showFullText. Если параметр не передан, то считайте, что он False и тогда делайте обрезание текста. В ссылке генерируйте URL на это же view з showFullText=true.
Если параметра showFullText==true то view должно показывать полный текст.
Это может выглядеть так:
def get(self,request,post_id):
try:
# если пареметр не передали то считаем что нужно обрезать
showFullText = bool(request.GET.get('showFullText', 'False'))
post = News.objects.get(id__iexact=post_id)
comments = post.comment_set.all()
except News.DoesNotExist:
return render(request,'blog/DoesNotExist.html')
except Http404:
raise HttpResponse('Такого поста нет')
return render(request,'blog/post.html',
context={
'post':post,
'showFullText':showFullText,
'comments':comments})
В шаблоне будет как-то так:
{% if showFullText %}
post.text
{% else %}
{{ post.text|truncatechars:100 }}
{% endif %}
Ссылку нужно генерировать используя тег url так то так:
<a href="{% url 'post_url_name' post.id %}?showFullText=true">View full text</a>
Вместо post_url_name нужно указать имя, которое для view использовано в urlconf