Ответы пользователя по тегу Django
  • Как можно разбить строку на подстроки в django templates?

    deepblack
    @deepblack
    Не надо это делать в шаблоне, даже если очень хочется.

    Но если вы очень упрямый, можете написать кастомный template tag.
    Ответ написан
    6 комментариев
  • Как исправить “NOT NULL constraint failed”?

    deepblack
    @deepblack
    Для реализации лайков (Голосов) отлично подходит GenericForeignKey - позволяет ссылаться на различные объекты и вообще данное решение более универсальное.
    class Like(models.Model):
        user = models.ForeignKey(settings.AUTH_USER_MODEL,
                                 related_name='likes',
                                 on_delete=models.CASCADE)
        content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
        object_id = models.PositiveIntegerField()
        content_object = GenericForeignKey('content_type', 'object_id')


    Я рекомендую посмотреть как устроена система лайков тут (* может быть заблокирован на территории России)

    UPD:
    Если ссылка выше не работает (и нет VPN), вариант заглянуть на GitHub
    Тут исходники приложения из ссылки выше.
    Возможно без обьяснения будет не очень понятно что здесь реализовано и почему именно так,
    но проект хорош как образец.
    Ответ написан
    4 комментария
  • Ошибка при запуске сервера Django. Что делать?

    deepblack
    @deepblack
    Имя хоста написано кириллицей и Python 3.4 или старее?
    Windows: socket.gethostbyaddr(name) fails for non-ASCII hostname
    bugs.python.org/issue26227

    • Обновить Python
    • Переименовать хост
    • Либо запускать Django передав ему ip адрес вместо имени хоста python manage.py runserver 127.0.0.1:8000
    UPD:

    я попробовал воспроизвести подобную ошибку в среде Win 10 (в VirtualBox) и у меня получилось только в случае
    если в файле hosts присутствует алиас с кириллицей и локаль Windows русская.
    spoiler
    5cfb3a55d8bd0793644215.png5cfb39ec9a939231168766.png

    Если удалить русский, оставив только английский (на русском только интерфейс системы), то всё ок.

    Так-же не удалось воспроизвести ошибку если при запуске указывать ip хоста как 127.0.0.2
    python manage.py runserver 127.0.0.2:8080
    При условии, что в hosts нет алиаса с кириллицей для него.

    На чистой системе (установлены только Python 3.7.2 и Pycharm Community, русская локаль) подобной ошибки нет.

    Заглянул в исходники socket.py и socketmodule.c
    Скорее всего данная особенность связаны с этой частью исходного кода Python на C, а именно PyUnicode_DecodeFSDefault
    #ifdef MS_WINDOWS
        /* Issue #26227: gethostbyaddr() returns a string encoded
         * to the ANSI code page */
        return PyUnicode_DecodeFSDefault(name);
    #else
        /* Decode from UTF-8 */
        return PyUnicode_FromString(name);
    #endif


    Далее, если имя хоста не написано кириллицей и в hosts нет кириллицы следует вывод, что с высокой долей вероятности дело в стороннем софте(антивирус, кривой кряк и т.д.).
    Ответ написан
  • Не работает migrations в Django?

    deepblack
    @deepblack
    У тебя импорты в коде под старую версию Django.
    А установлена скорее всего версия 2.2

    В ней urls.py выглядит следующим образом:
    from django.urls import path
    
    from . import views
    
    urlpatterns = [
        path('articles/2019/', views.special_case_2019),
        # ...
    ]


    Рекомендую пройти tutorial по Django на оф. сайте.
    Это позволит избежать подобных вопросов в дальнейшем.
    Ответ написан
    Комментировать
  • Хостинг для Django 2 сайта с поддержкой sqlite3?

    deepblack
    @deepblack
    1. SQLite плохой вариан для сайта в продакшн, даже если нагрузка небольшая. PostgreSQL наше всё, или можете взять MySQL.

    2. Если нет необходимости держать сервер в РФ, то я порекомендую Hetzner Cloud (отличное соотношение цена/качество), цена начинается от 2,99 Евро (в рублях примерно 230 будет, это если с карты Сбера платить). Если пользовались менее месяца, оплата будет считаться по часам (от 0,005 Евро в час)
    • 1 vCPU
    • 2 Gb RAM
    • 20 Gb SSD
    • 20 Tb traffic

    Такого хостинга хватит на несколько сайтов с небольшой нагрузкой,
    и еще десяток ботов в придачу.

    Вменяемая техподдержка, удобная веб-морда, да и в целом проблем не замечено.
    Сервера есть в Германии и в Финляндии (из Питера пинг отличный)
    Скриншот
    5ccf8b438cbdf721086467.png
    Ответ написан
    3 комментария
  • Как передать 2 параметра в urlspatterns?

    deepblack
    @deepblack
    Тебе нужно добавить данные в контекст:

    from django.views.generic.base import TemplateView
    
    from articles.models import Article
    
    class HomePageView(TemplateView):
    
        template_name = "home.html"
    
        def get_context_data(self, **kwargs):
            context = super().get_context_data(**kwargs)
            context['latest_articles'] = Article.objects.all()
            return context


    В context['latest_articles'] у тебя будут статьи.

    В шаблоне:

    <h1>Articles</h1>
    <ul>
    {% for article in latest_articles %}
        <li>{{ article.pub_date|date }} - {{ article.headline }}</li>
    {% empty %}
        <li>No articles yet.</li>
    {% endfor %}
    </ul>


    Либо сделай через ListView
    Ответ написан
  • Почему на показывает в шапке, что пользователь авторизирован?

    deepblack
    @deepblack
    {% if user.is_authenticated  %}
        {{ user.first_name }} {{ user.last_name }}
    {% else %}
        <a href="{% url 'app:login' %}">{% blocktrans %}Log in{% endblocktrans %}</a>
    {% endif %}

    Почитайте на досуге, рекомендую )
    Ответ написан
    Комментировать