@Sergey0808

Python Django, как сделать кнопки поделиться с помощью templatetags для всех приложений?

Cоздаю templatetags папку в приложении. Далее создаю в этой папке файл share_social следующего содержания:
from django import template
    from django.template.loader import render_to_string

    register = template.Library()

    @register.simple_tag(name='share')
    def share():
        return render_to_string('news/social_buttons.html')

Далее в шаблон подгружаю этот тэг и использую его:
{% load share_social %}
    <div class="share-social">
        <h3>Поделиться в социальных сетях:</h3>
            {% share %}
    </div>

В моделях новостей реализую метод get_absolute_url, который возвращающий ссылку на запись.
Содержание подгружаемого шаблона по тегу {% share %}:
<a href="http://vk.com/share.php?url=http:/{% url 'news:index' %}/{{ news.get_absolute_url }}"
   target="_blank" rel="nofollow">
       <img src="/media/social_share/vk-social-logotype_318-65222.jpg">
   </a>
   <a href="https://twitter.com/share?url={% url 'news:index' %} + /{{ news.get_absolute_url }}"
   target="_blank" rel="nofollow">
      <img src="/media/social_share/twitter-logo-on-black-background_318-76332.jpg">
   </a>
   <a href="https://www.facebook.com/sharer/sharer.php?u={% url 'news:index' %}/{{ news.get_absolute_url }}"
   target="_blank" rel="nofollow">
      <img src="/media/social_share/facebook-logo_318-49940.jpg">
   </a>
   <a href="http://www.odnoklassniki.ru/dk?st.cmd=addShare&st.s=1&st._surl={% url 'news:index' %}/{{ news.get_absolute_url 
   }}"
   target="_blank" rel="nofollow">
      <img src="/media/social_share/odnoklassniki-logo_318-65358.jpg">
   </a>

Не создаётся ссылка, как передать обьект в ссылку ? Либо посоветуйте другой подход
  • Вопрос задан
  • 887 просмотров
Пригласить эксперта
Ответы на вопрос 1
Astrohas
@Astrohas
Python/Django Developer
используйте include вместо велосипедов

<div class="share-social">
        <h3>Поделиться в социальных сетях:</h3>
            {% include "news/social_buttons.html" %}
    </div>
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы