• На чем легче писать игры?

    alsopub
    @alsopub
    Надеюсь у вас не все вопросы будут как первый:
    nelzya-prosto-vzyat_22214234_orig_.jpg

    Антиоффтоп - конечно после else не может быть никаких других else - это финальный блок условия.
    Ответ написан
    Комментировать
  • Django, как вытащить потомка?

    un1t
    @un1t
    Для деревьев можно использовать django-mptt, тогда можно потомков с любым уровнем вложенности вытаскивать одним запросом.
    Ответ написан
    Комментировать
  • Django, как вытащить потомка?

    @iegor
    Если вам нужны все потомки, то вам нужен рекурсивный запрос. Поддерживается большинством SQL, но сомневаюсь, что джанга умеет что-то подобное. Необходимо написать запрос на чистом sql. Как альтернатива можно на джанге сформировать кучу отдельных запросов, но это плохой путь. Чистый sql или может кто-то, написал какую-нибудь библитеку для этого
    Ответ написан
    7 комментариев
  • Django, как вытащить потомка?

    @deliro
    category.category_set.all()

    Если нужно покрасивее:
    class Category(models.Model):
        parent = models.ForeignKey('self', null=True, blank=True, related_name='children')
    
    category.children.all()
    Ответ написан
    3 комментария
  • Как решить, казалось бы, простую задачу на python3?

    aRegius
    @aRegius
    Python Enthusiast
    Привет.

    1. Есть два числа, x и y (целые положительные).
    2. Есть их разность, z (z = x - y)
    3. Чтобы найти большее из них, всего-то нужно сумму этих двух чисел и их разности разделить на 2:
    max_num = (x + y + z)/2
    4. Единственная "засада" в том, что, ввиду неопределенности чисел, их разность может быть отрицательным числом (например, x = 5, y = 853, x - y = - 848).
    5. Поэтому нам надо обеспечить, чтобы разность, при любом раскладе, была положительная.
    6. Для этого мы эту самую разность возводим во вторую степень и извлекаем из результата квадратный корень - для того, чтобы код был менее шумный, разделим эту процедуру на два этапа: a) z = (x - y) ** 2; б) z = z ** .5

    7. Итоговый код:
    z = (x - y) ** 2
    z = z ** .5
    max_num = (x + y + z) / 2
    Ответ написан
    2 комментария
  • Корректировка пагинации в django?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Django
    Седой и строгий
    Для примера кусок из моего старого кода:
    <div class="page-nav">
        {% if paginator.page.has_previous %}
        <!-- Показывам кнопку со ссылкой, если есть предыдущая страница -->
        <a href="{% url 'newslines:show_page' paginator.page.previous_page_number %}">&lt;&nbsp; Вперед</a>
        {% else %}
        <!-- Показываем неактивную кнопку, если предыдущей страницы нет -->
        <span>&lt;&nbsp; Вперед</span>
        {% endif %}
        
        <!-- Прибавляем к номеру текущей страницы -4 (т.е. отнимаем 4) -->
        {% if paginator.page.number|add:'-4' > 0 %} 
        <!-- Если до текущей страницы есть больше 4 страниц, показываем многоточие -->
        <span class="ellipsis">...</span>
        {% endif %}
        
        {% if paginator.page.number|add:'-3' > 0 %}
        <!-- Если до текущей страницы есть ещё три страницы -->
        <a href="{% url 'newslines:show_page' paginator.page.number|add:'-3' %}">{{ paginator.page.number|add:'-3' }}</a>
        {% endif %}
        {% if paginator.page.number|add:'-2' > 0 %}
        <!-- Если до текущей страницы есть ещё две страницы -->
        <a href="{% url 'newslines:show_page' paginator.page.number|add:'-2' %}">{{ paginator.page.number|add:'-2' }}</a>
        {% endif %}
        {% if paginator.page.number|add:'-1' > 0 %}
        <!-- Если до текущей страницы есть ещё одна страница -->
        <a href="{% url 'newslines:show_page' paginator.page.number|add:'-1' %}">{{ paginator.page.number|add:'-1' }}</a>
        {% endif %}
        
        <!-- Номер текущей страницы -->
        <span>{{ paginator.page.number }}</span>
        
        {% if paginator.page.number|add:'1' <= paginator.num_pages %}
        <!-- Если после текущей страницы есть ещё одна страница -->
        <a href="{% url 'newslines:show_page' paginator.page.number|add:'1' %}">{{ paginator.page.number|add:'1' }}</a>
        {% endif %}
        {% if paginator.page.number|add:'2' <= paginator.num_pages %}
        <!-- Если после текущей страницы есть ещё две страницы -->
        <a href="{% url 'newslines:show_page' paginator.page.number|add:'2' %}">{{ paginator.page.number|add:'2' }}</a>
        {% endif %}
        {% if paginator.page.number|add:'3' <= paginator.num_pages %}
        <!-- Если после текущей страницы есть ещё три страницы -->
        <a href="{% url 'newslines:show_page' paginator.page.number|add:'3' %}">{{ paginator.page.number|add:'3' }}</a>
        {% endif %}
        
        {% if paginator.page.number|add:'4' <= paginator.num_pages %}
        <!-- Если после текущей страницы есть ещё четыре страницы -->
        <span class="ellipsis">...</span>
        {% endif %}    
        
        {% if paginator.page.has_next %}
        <!-- Показывам кнопку со ссылкой, если есть следующая страница -->
        <a href="{% url 'newslines:show_page' paginator.page.next_page_number %}">Назад &nbsp;&gt;</a>
        {% else %}
        <!-- Если нет следующей страницы -->
        <span>Назад &nbsp;&gt;</span>
        {% endif %}
    </div>


    Получается вот такая пагинация ef086be9918f47099a2dc17857a32883.png
    Добавить элементы для первой и последней страницы не так тяжело, если надо.

    Либо можно воспользоваться этим рецептом.
    Ответ написан
    4 комментария
  • Как связать домен, nginx + uwsgi + django?

    dizballanze
    @dizballanze
    Software developer at Yandex
    Удаляете все хосты из nginx:
    rm /etc/nginx/sites-enabled/*

    Добавляете хост в /etc/nginx/sites-available/<mydomain>:

    server {
        listen 80;
        server_name <mydomain>;
    
        location / {
            proxy_pass  http://localhost:8000;
            proxy_set_header    Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }


    Делаете симлинк на хост:
    ln -s /etc/nginx/sites-available/<mydomain> /etc/nginx/sites-enabled/


    Перезапускаете Nginx:
    /etc/init.d/nginx restart
    Ответ написан
    4 комментария