2016-02-23 2 views
0

Поэтому я стараюсь рекомендовать пользователям для социальной сети на основе этого условия: если А следует Б и В следует С, то, мы должны рекомендовать А следует СDjango/Python HTML рекомендовать друзьям

У меня есть этот код до сих пор, который отображает общие друзья, все пользователи и те, которые следуют за вами

<ul> 
{% for member in members %} 
    <li> <a href="?view={{ member.username }}"> {{ member.username }} </a> 
    {% if member in following %} 
     {% if member in followers %} 
      &harr; is a mutual friend [<a href="?remove={{ member.username }}">drop</a>] </li> 
     {% else %} 
      &larr; you are following [<a href="?remove={{ member.username }}">drop</a>] </li> 
     {% endif %} 
    {% else %} 
     {% if member in followers %} 
      &rarr; is following you [<a href="?add={{ member.username }}">recip</a>] </li> 
     {% else %} 
      [<a href="?add={{ member.username }}">follow</a>] </li> 
     {% endif %} 
    {% endif %} 
{% endfor %} 
</ul> 

Но я застрял делать это условие, так что любая помощь будет здорово, спасибо!

ответ

0

Шаблоны Django не должны инкапсулировать чрезмерно сложную логику, по дизайну. Они являются главным образом инструментом проектирования, и основная логика должна выполняться в python. Вот почему есть четкие ограничения того, что вы можете сделать в шаблоне без лишних обручей.

Вот простой вариант, как реализовать ваши требования

def get_status(user,member): 

    ... calculate follower status here ... 
    return msg,href,link_text 

В представлении, где вы запускаете QuerySet:

members = Members.objects.all() 
for member in members: 
    member.msg,member.href,member.link_text = get_status(member,request.user) 

Наконец, в шаблоне:

<ul> 
{% for member in members %} 
    <li> <a href="?view={{ member.username }}"> {{ member.username }} </a> 
     &harr; {{ member.msg }} [<a href="{{ member.href }}">{{ member.link_text }}</a>] </li> 
{% endfor %} 
</ul> 

Примечание: это простой ответ. Вы должны действительно продумать эту логику, где вы хотите ее поместить (в модели, возможно, в качестве метода Member), использовать обратную ссылку для URL-адресов и т. Д. Но идея заключается не в том, чтобы вводить основные правила приложения в шаблон

+0

Спасибо. Таким образом, внутри функции get_status() я использую свою логику, по существу проверяя, что пользователь следует за членом, а член следует за C, а затем рекомендует C пользователю? – Aceboy1993

+0

Да. Это действительно базовая задача, вы, вероятно, хотите, чтобы одна функция возвращала общий «статус» и другую функцию lang, чтобы вытащить правильные msg, href и т. Д. Подумайте о том, чтобы добавить helpers.py с такими функциями в каталог приложения. –

Смежные вопросы