Рубрики
Без рубрики

Учебник Django # 9: Оберните вещи

Вы можете скачать исходный код этого руководства здесь. https: //www.techjblog.com/index.php/django-tu … Теги с Джанго, Питоном, Учебником, WebDev.

Вы можете скачать исходный код этого руководства здесь. https://www.techjblog.com/index.php/django-tutorial-for-beginners/

В этом посте мы создадим некоторые дополнительные функции для нашего веб-сайта. Если вы не заинтересованы, просто пропустите конец этого поста и начните готовиться к развертыванию.

Пагинация

Когда мы добавляем все больше сообщений в наш блог, создание Paginator может быть хорошей идеей, поскольку мы не хотим иметь слишком много сообщений на одной странице.

Для этого нам нужно добавить дополнительный код на наши взгляды. Давайте возьмем Главная Вид имеет пример.

Импорт необходимых пакетов:

from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger

Обновление Главная Посмотреть:

def home(request):
    page = request.GET.get('page', '')
    posts_list = Post.objects.all()
    paginator = Paginator(posts_list, 1)

    try:
        posts = paginator.page(page)
    except PageNotAnInteger:
        posts = paginator.page(1)
    except EmptyPage:
        posts = paginator.page(paginator.num_pages)

    return render(request, 'blog/home.html', {
        'posts': posts,
    })

Здесь я полосал ненужную часть, чтобы избежать путаницы, но вам нужно помнить, чтобы добавить их.

Линия 2, мы получаем номер страницы здесь, что нам нужно будет использовать позже.

Линия 3, получите все сообщения, как мы сделали раньше.

Строка от 6 до 11, здесь мы пробуем три разных условия. Если номер страницы является целым числом, если номер страницы не является целым числом, и если номер страницы пуст.

Далее нам нужно отобразить так, как этот пагинатор:



{% if posts.has_other_pages %}

{% if posts.has_other_pages %}
    
    {% if posts.has_previous %}
  • «
  • {% else %}
  • «
  • {% endif %} {% for i in posts.paginator.page_range %} {% if posts.number == i %}
  • {{ i }} (current)
  • {% else %}
  • {{ i }}
  • {% endif %} {% endfor %} {% if posts.has_next %}
  • »
  • {% else %}
  • »
  • {% endif %}
{% endif %}

Обновить страницу, и вы должны увидеть пагинатор внизу.

Похожие сообщения

Идея состоит в том, чтобы получить сообщения с одинаковыми тегами.

Обновление пост Посмотреть:

def post(request, slug):
    requested_post = Post.objects.get(slug=slug)
    post_tags = requested_post.tag.values_list('id', flat=True)
    related_posts = Post.objects.filter(tag__in=post_tags).exclude(id=requested_post.id)

    return render(request, 'blog/post.html', {
        'post': requested_post,
        'related_posts': related_posts,
    })

Строка 3, получите все теги, которые имел этот пост.

Линия 4, получите все посты, которые имеют хотя бы один из тегов от post_tags , но исключить тот же пост.

Показать соответствующие сообщения:


Related Posts

{% for post in related_posts %}
{{ post.title }}

{{ post.title }}

{{ post.content|striptags|truncatewords_html:25 }}

{% endfor %}

Если вы устали от кодирования, всегда есть простой способ, используя Добавь это . Они имели соответствующие сообщения, Chare Buttons, формы подписки и множество других инструментов, которые вы можете найти полезным.

Комментарии

Во-первых, зарегистрируйтесь Disqus Счет.

Создайте новый сайт.

Следуйте инструкциям и поставьте код в правильное место, и Disqus позаботится обо всем остальном.

Подготовьтесь к развертыванию

Есть несколько вещей, которые нам нужно сделать, прежде чем развертывать наш сайт.

Подготовьте статические и медиафайлы. Запустите следующую команду:

python manage.py collectstatic

Эта команда будет собирать все статические файлы со всех приложений, которые вы создали в StaticFiles папка. И теперь мы можем удалить Статические (настройки .static_url. Static_root) из конфигурации URL.

СМИ, с другой стороны, Django препятствует обслуживанию медиафайлов непосредственно с сервера в производственной среде. Вам необходимо настроить настройки вашего сервера. Возьми Apache в качестве примера:

Alias /media/ /path/to/mediafiles/


Order deny,allow
Allow from all

Обратите внимание, что /СМИ/ соответствует настройке для Media_url и /path/to/mediafiles/ это Абсолют путь к MediaFiles/ папка.

Проверка развертывания запуска

Прежде чем мы разверним наш проект, нам нужно проверить несколько вещей. Перейти к терминалу и запустить manage.py check - развертывать Отказ Эта команда проверит Secret_key , Отладка , Разрешенные_ходки И несколько других чувствительных настроек для вас.

Пожалуйста, проверьте свои собственные настройки против этой документации: https://docs.djangoproject.com/en/3.0/howto/deployment/checklist/

Оригинал: “https://dev.to/ericnanhu/django-tutorial-9-wrap-things-up-e8p”