139 подписчиков
Мой первый шаг в создании сайтов с помощью Django и Python: Реализация поиска новостей
Привет, друзья! Сегодня я продолжаю своё увлекательное путешествие в мир веб-разработки, изучая Django и Python. Один из самых захватывающих моментов моего дня — это освоение техники создания поисковой функции для новостного сайта. Хочу поделиться с вами этим опытом и показать, как это можно реализовать шаг за шагом.
Шаг 1: Настройка модели новостей в Django
Прежде всего, для хранения и отображения новостей на сайте мы определяем модель News. В ней будет несколько основных полей, таких как заголовок новости (titleNews), содержание (content), и дата публикации (published_date).
# models.py
from django.db import models
class News(models.Model):
titleNews = models.CharField(max_length=200)
content = models.TextField()
published_date = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.titleNews
Шаг 2: Создание представления для результатов поиска
Для обработки запросов поиска и отображения результатов мы создаем представление SearchResultsView. Это представление наследуется от ListView и будет отображать список новостей, удовлетворяющих условиям поиска.
# views.py
from django.views.generic import ListView
from .models import News
class SearchResultsView(ListView):
model = News
template_name = 'news/search_results.html'
context_object_name = 'news_search'
def get_queryset(self):
query = self.request.GET.get('q')
if query:
return News.objects.filter(titleNews__icontains=query)
return News.objects.all()
Шаг 3: Создание шаблона для отображения результатов поиска
Наконец, нам нужно создать шаблон search_results.html, который будет отображать результаты поиска. В этом шаблоне мы используем переменную news_search, которая содержит список новостей, соответствующих запросу пользователя.
<!-- search_results.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Search Results</title>
</head>
<body>
<h1>Search Results</h1>
<ul>
{% for news in news_search %}
<li>{{ news.titleNews }}</li>
<p>{{ news.content }}</p>
<p>Published on: {{ news.published_date }}</p>
{% empty %}
<p>No results found.</p>
{% endfor %}
</ul>
</body>
</html>
Заключение
Создание функции поиска новостей на сайте с помощью Django — это увлекательный и практичный способ применить свои знания веб-разработки на практике. Я рад поделиться этим опытом с вами и надеюсь, что этот пример поможет вам развиваться в создании собственных проектов с использованием Django и Python. Следите за моими новыми достижениями в мире веб-разработки!
2 минуты
16 июля 2024