Разное

Поиск django: Django поиск на сайте

Содержание

Django поиск на сайте

Для организации поиска на сайте, который основан на Django , и использует базу данных PostgreSQL можно использовать модуль для поиска по этой базе данных, поставляемый с Django. Тем более, что данный поиск обеспечивает полнотекстовый поиск в достаточной мере для небольшого ресурса.

Но для того, чтобы выдача поисковых запросов походила больше на главную страницу, добавим возможность пагинации страниц выдачи, а результаты будут выводиться по 10 штук на одной странице. И для этого также будем использовать модуль django_bootstrap3.

В итоге имеем следующий план действий:

  1. Добавляем приложение для организации поиска;
  2. Добавляем url поиска;
  3. Добавляем форму поиска;
  4. Описываем шаблон страницы поиска.
  5. Описываем представление для обработки выдачи поиска;

Добавляем приложение для поиска

Стандартный момент по созданию нового приложения в вашем проекте Django:


python manage.db startapp search

На выходе получим новое приложение со следующей структурой:


search/
    migrations/
        __init__.py
    __init__.py
    admin.py
    apps.py
    models.py
    tests.py
    views.py

Подкорректируем немного файл settings.py . Добавим конфигурацию нашего приложения, используется та, что создастся по умолчанию, также воспользуемся двумя модулями:

  1. Для работы с postgres
  2. django_bootstrap3

INSTALLED_APPS = [
    ...
    'search.apps.SearchConfig',
    'django.contrib.postgres',
    'bootstrap3',
    ...
]

Добавляем urls поиска

Во-первых, необходимо добавить url шаблон, который отправит запрос в приложение search.


from django.conf.urls import url, include

urlpatterns = [
    ...
    url(r'^search/', include('search.urls')),
]

Во-вторых, нужно добавить urls.py файл в само приложение search со следующим содержимым, чтобы настроить отправку запроса в представление.


from django.conf.urls import url

from . import views

app_name = 'search'
urlpatterns = [
    url(r'^$', views.ESearchView.as_view(), name='index'),
]

Форма поиска

Форма поиска добавлена в базовый шаблон base.html в приложении home , который будет наследоваться шаблоном страницы поиска.

Приведу тот вариант, который используется на данном сайте с использованием django-bootstrap3


{% load bootstrap3 %}
<form action="{% url 'search:index' %}" method="get">
    <div>
        <input name="q" type="text" placeholder="Поиск">
        <span>
            <button type="submit">{% bootstrap_icon 'search' %}</button>
        </span>
    </div>
</form>

Разберёмся в ключевых моментах:

  1. В поле action указан адрес куда будет посылаться запрос;
  2. Будет использоваться метод GET, поскольку пользователь может захотеть поделиться результатом поиска;
  3. bootstrap_icon подгружает иконки из набора glyphicons.

Шаблон страницы поиска

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

Но самым главным отличием от главной страницы является то, что каким-то образом необходимо совместить перелистывание страниц при пагинации и сохранение запроса. Для этого можно подставлять кастомизированный URL в bootstrap_pagination. А именно url=last_question,который будет содержать последний запрос, который был задан в форме поиска. К этому URL автоматически будет добавлен номер страницы.


{% extends 'home/base.html' %}
{% load bootstrap3 %}
{% block page %}
    <h2>Поиск</h2>
    {% if article_lists %}
        {% for article in article_lists %}
            <article>
                <a href="{{ article.get_absolute_url }}">
                    <h3>{{ article.article_title }}</h3>
                </a>
                {{ article.desctription|safe }}
                <p><a href="{{ article.get_absolute_url }}">Читать далее</a></p>
            </article>
        {% endfor %}
        {% bootstrap_pagination article_lists url=last_question %}
    {% else %}
        <p>Не найдено публикаций по вашему запросу<br>Попробуйте повторить запрос с другой формулировкой</p>
    {% endif %}
{% endblock %}

Представление поиска

Важным моментом является здесь то, что из запроса необходимо подготовить URL, который будет содержать последний запрос и подставляться в кнопочки пагинации. Иначе при нажатии кнопки пагинации поиск будет ошибочен и скорее всего будете получать ошибку 500 .


from django.shortcuts import render_to_response
from django.core.paginator import Paginator, PageNotAnInteger, EmptyPage
from django.views import View

from knowledge.models import Article


class ESearchView(View):
    template_name = 'search/index.html'

    def get(self, request, *args, **kwargs):
        context = {}

        question = request.GET.get('q')
        if question is not None:
            search_articles = Article.objects.filter(article_content__search=question)

            # формируем строку URL, которая будет содержать последний запрос
            # Это важно для корректной работы пагинации
            context['last_question'] = '?q=%s' % question

            current_page = Paginator(search_articles, 10)

            page = request.GET.get('page')
            try:
                context['article_lists'] = current_page.page(page)
            except PageNotAnInteger:
                context['article_lists'] = current_page.page(1)
            except EmptyPage:
                context['article_lists'] = current_page.page(current_page.num_pages)

        return render_to_response(template_name=self.template_name, context=context)

Урок 34 / Создание представления поиска / Блог на Django 2.0

Теперь нужно создать представление для того, чтобы пользователи могли осуществлять поиск по постам. В первую очередь нужна форма поиска. Отредактируйте файл forms.py приложения blog и добавьте следующую форму:

class SearchForm(forms.Form): 
    query = forms.CharField()

Будем использовать поле query, чтобы пользователи могли ввести поисковые запросы. Отредактируйте файл views.py и добавьте следующий код:

from django.contrib.postgres.search import SearchVector 
from .forms import EmailPostForm, CommentForm, SearchForm 

def post_search(request): 
    form = SearchForm() 
    query = None 
    results = [] 
    if 'query' in request.GET: 
        form = SearchForm(request.GET) 
        if form.is_valid(): 
            query = form.cleaned_data['query'] 
            results = Post.objects.annotate(
                search=SearchVector('title', 'body'), 
            ).filter(search=query) 
    return render(request, 
                  'blog/post/search.html', 
                  {'form': form, 
                   'query': query, 
                   'results': results})

В этом представлении в первую очередь создается экземпляр формы SearchForm. Она будет приниматься с помощью метода GET, так, чтобы итоговый URL включал параметр query. Чтобы проверить, принята ли форма, проверяем параметр query в словаре request.GET. Когда форма принимается, создаем ее экземпляр с принятыми данными GET и верифицируем. Если она проходит проверку, проводим поиск с помощью SearchVector по полям title и body.

Представление поиска готово. Нужно создать шаблон для отображения формы и результатов поиска. Создайте файл в папке с шаблонами /blog/post/, назовите его search.html и добавьте следующий код:

{% extends "blog/base.html" %}

{% block title %}Search{% endblock %}

{% block content %}
  {% if query %}
    <h2>Posts containing "{{ query }}"</h2>
    <h4>
      {% with results.count as total_results %}
	Found {{ total_results }} result{{ total_results|pluralize }}
      {% endwith %}
    </h4>
    {% for post in results %}
      <h5><a href="{{ post.get_absolute_url }}">{{ post.title }}</a></h5>
      {{ post.body|truncatewords:5 }}
    {% empty %}
      <p>There are no results for your query.</p>
    {% endfor %}
    <p><a href="{% url "blog:post_search" %}">Search again</a></p>
  {% else %}
    <h2>Search for posts</h2>
    <form action="." method="get">
      {{ form.as_p }}
      <input type="submit" value="Search">
    </form>
  {% endif %}
{% endblock %}

Как и в представлении поиска, узнать, была ли форма проверена, можно по присутствию параметра query. Перед проверкой отображаем форму и кнопку подтверждения. После проверки, отображаем проведенный поиск и общее количество результатов, а также список постов.

Наконец, отредактируйте файл urls.py приложения blog и добавьте следующий шаблон URL:

path('search/', views.post_search, name='post_search'),

Теперь откройте https://127.0.0.1:8000/blog/search/ в браузере. Вы увидите форму. Введите запрос и нажмите на кнопку «Search».

Теперь у блога есть базовая поисковая система.

Поиск в Django REST Framework с помощью Elasticsearch / Хабр

Пользователи ищут товары в интернет-магазине, ищут стати, поиск это неотъемлемый компонент сайта. Быстрый и гибкий поиск сложно реализовать средствами реляционных баз данных. Для таких задач используют поисковые движки, один из которых Elasticsearch. Elasticsearch хорошо документирован и доступен из коробки на AWS.

Для работы с elasticsearch используется библиотека elasticsearch-py или elasticsearch-dsl-py. elasticsearch-dsl-py это надстройка над elasticsearch-py, она проста в использовании и поддерживает elasticsearch версии 5.x. На базе этой библиотеки была создана библиотека django-rest-elasticsearch, которая основана на идеологии существующего поиска в Django REST Framework. Ниже я детально распишу как реализовать поиск в Django REST Framework с помощью elasticsearch используя данную библиотеку.

В качестве примера рассмотрим реализацию простого блога с фильтрацией по тегам и поиском по заголовку статей.

Установка

Процесс установки elasticsearch и django детально расписан в официальных документациях. С установкой пакета все достаточно просто

pip install django-rest-elasticsearch

Создание модели и индекса

Создадим модель

class Blog(models.Model):
    title = models.CharField(_('Title'), max_length=1000)
    created_at = models.DateTimeField(_('Created at'), auto_now_add=True)
    body = models.TextField(_('Body'))
    tags = ArrayField(models.CharField(max_length=200), blank=True, null=True)
    is_published = models.BooleanField(_('Is published'), default=False)

    def __str__(self):
        return self.title

После создания модели опишем нашу модель в виде elasticsearch документа.

class BlogIndex(DocType):

    pk = Integer()
    title = Text(fields={'raw': Keyword()})
    created_at = Date()
    body = Text()
    tags = Keyword(multi=True)
    is_published = Boolean()

    class Meta:
        index = 'blog'

Теперь можно создать индекс в elasticsearch

BlogIndex.init()

Автоматическое обновление документов в elasticsearch

После создания модели и индекса, нужно что бы любые изменения в нашей модели были отображены в elasticsearch. Наилучшим средством это сделать добавить django сигнал, который отправить уведомления когда будут происходит изменения в модели. Прежде чем создать сигнал создадим сериалайзер для преобразования django объекта в документ elasticsearch

from rest_framework_elasticsearch.es_serializer import ElasticModelSerializer
from .models import Blog
from .search_indexes import BlogIndex

class ElasticBlogSerializer(ElasticModelSerializer):
    class Meta:
        model = Blog
        es_model = BlogIndex
        fields = ('pk', 'title', 'created_at', 'tags', 'body', 'is_published')

Теперь добавим сигнал

from django.db.models.signals import pre_save, post_delete
from django.dispatch import receiver
from .serializers import Blog, ElasticBlogSerializer

@receiver(pre_save, sender=Blog, dispatch_uid="update_record")
def update_es_record(sender, instance, **kwargs):
    obj = ElasticBlogSerializer(instance)
    obj.save()

@receiver(post_delete, sender=Blog, dispatch_uid="delete_record")
def delete_es_record(sender, instance, *args, **kwargs):
    obj = ElasticBlogSerializer(instance)
    obj.delete(ignore=404)

После добавления сигнала, любые изменения в модели моментально будут сделаны в elasticsearch

Создание view

Приступим к создания view для поиска и фильтрации

from elasticsearch import Elasticsearch, RequestsHttpConnection
from rest_framework_elasticsearch import es_views, es_filters
from .search_indexes import BlogIndex

class BlogView(es_views.ListElasticAPIView):
    es_client = Elasticsearch(hosts=['elasticsearch:9200/'],
                              connection_class=RequestsHttpConnection)
    es_model = BlogIndex
    es_filter_backends = (
        es_filters.ElasticFieldsFilter,
        es_filters.ElasticSearchFilter
    )
    es_filter_fields = (
        es_filters.ESFieldFilter('tag', 'tags'),
    )
    es_search_fields = (
        'tags',
        'title',
    )

Вот и все, примеры поиска

http://example.com/blogs/api/list?search=elasticsearch
http://example.com/blogs/api/list?tag=opensource
http://example.com/blogs/api/list?tag=opensource,aws

Полный код примера доступен на github. Надеюсь что статья поможет Вам реализовать поиск в Вашем проекте. 

Урок 35 / Поисковые алгоритмы в Django / Блог на Django 2.0

Сокращение и ранжирование результатов

Django предлагает класс SearchQuery для перевода запросов в объект поискового запроса. По умолчанию запросы проходят через алгоритмы сокращения, что позволяет лучше находить совпадения. Также можно отсортировать результаты по релевантности. PostgreSQL предоставляет функцию ранжирования, которая сортирует результаты на основе того, как часто текст запроса появляется и как близко они расположены относительно друг друга. Отредактируйте файл views.py приложения blog и добавьте следующие импорты:

from django.contrib.postgres.search import SearchVector, SearchQuery, SearchRank

Затем взгляните на эти строки:

results = Post.objects.annotate(
		search=SearchVector('title', 'body'), 
	  ).filter(search=query)

Замените их этими:

search_vector = SearchVector('title', 'body') search_query = SearchQuery(query) 
results = Post.objects.annotate( 
	      search=search_vector,
	      rank=SearchRank(search_vector, search_query)
	  ).filter(search=search_query).order_by('-rank')

В этом коде создается объект SeatchQuery, после этого результаты фильтруются, а SearchRank используется для их ранжирования. Можете открыть https://127.0.0.1:8000/blog/search/ в браузере и провести несколько тестов, чтобы увидеть, как работает сокращение и ранжирование.

Вес запросов

Можно сделать так, чтобы у определенных направлений было больше веса при сортировке по релевантности. Например, такой код подойдет, чтобы ранжировать результаты в первую очередь по заголовкам, а не по телу. Отредактируйте предыдущие строки файла views.py приложения blog, чтобы он выглядел так:

search_vector = SearchVector('title', weight='A') + SearchVector('body', weight='B') 
search_query = SearchQuery(query) 
results = Post.objects.annotate( 
		rank=SearchRank(search_vector, search_query)
	  ).filter(rank__gte=0.3).order_by('-rank')

В этом коде используется дополнительный «вес» для направлений поиска в полях title и body. Вес по умолчанию — D, C, B и A. Они соответствуют числам 0.1, 0.2, 0.4 и 1.0 соответственно. Применим вес 1.0 к полю title и 0.4body: совпадения в заголовке будут преобладать над таковыми в теле. Отфильтруем результаты для отображения только тех, у которых вес больше 0.3.

Поиск по схожести триграмм

Еще один поисковый алгоритм — схожесть триграмм. Триграмма — это группа из трех символов. Можно измерить схожесть двух строк, посчитав количество общих триграмм. Этот подход часто используется для измерения схожести слов во многих языках.

Для использования триграмм в PostgreSQL нужно сперва установить pg_trgm. Используйте следующую команду, чтобы подключиться к базе данных:

psql blog
Подписывайтесь на телеграм каналы

Затем эту, чтобы установить расширение pg_trgm:

CREATE EXTENSION pg_trgm;

Отредактируйте представление и измените его для поиска триграм. Отредактируйте файл views.py приложения blog и добавьте следующий импорт:

from django.contrib.postgres.search import TrigramSimilarity

Затем замените поисковый запрос Post на следующие строки:

results = Post.objects.annotate(
		similarity=TrigramSimilarity('title', query), 
	  ).filter(similarity__gt=0.3).order_by('-similarity')

Откройте https://127.0.0.1:8000/blog/search/ в браузере и проверьте разные варианты поиска триграмм. Например, введите yango и получите результаты включающие слово django (есть в блоге есть статьи с таким словом).

Теперь у проекта мощный поисковый движок. Еще больше информации о полнотекстовом поиске можно найти здесь https://docs.djangoproject.com/en/2.0/ref/contrib/postgres/search/.

Простой поиск на Django — alimuradov.ru

Полнотекстовый поиск конечно хорошо, но иногда нет необходимости в нем. Реализация  простого поиска, в django оказалась довольно тривиальной задачей. Дабы облегчить кому то поиск, того, на что у меня ушло несколько часов да и себе на памятку, опишу вкратце как реализовать простой поиск на Django.

Допустим у нас есть модель

class Patient(models.Model):
    """
    Модель описывающая пациентов клиники, реализована
    в виде отдельного приложения, так как будет являться одной из базовых моделей
    исходя из логики пронраммы
    """
    firstname = models.CharField(max_length=100, verbose_name="Имя", blank=False, null=True)
    lastname = models.CharField(max_length=300, verbose_name="Фамилия", blank=False, null=True)
    midle_name = models.CharField(max_length=300, verbose_name="Отчетство", blank=True, null=True)

Так как  для отображения списка я использую CBV, а именно ListView то и переопредеять мы будем именно его

class PatientListView(CompanyProtectionMixin, ListView):
    model = Patient
    paginate_by = 12
    template_name = 'patient/patient_list.html'
    context_object_name = 'patients'

    def get_queryset(self):
        result = super(PatientListView, self).get_queryset()

        query = self.request.GET.get('q')
        if query:
            query_list = query.split()
            result = result.filter(
                reduce(operator.and_,
                       (Q(firstname__icontains=q) for q in query_list)) |
                reduce(operator.and_,
                       (Q(lastname__icontains=q) for q in query_list))  |
                reduce(operator.and_,
                       (Q(midle_name__icontains=q) for q in query_list))
            )
        return result

Теперь нам осталось внести правки в наш шаблон. В начало таблицы я добавил,  форму поиска, которая содержит следующий код

            <form action="{% url 'patient_list' %}" method="get" accept-charset="utf-8">
                <input type="text" placeholder="Найти пациента по имени " name="q">
                <span>
                        <button type="submit"> <i></i> Поиск</button>
                </span>
            </form>

Для полноты также приведу содержимое файла urls.py

urlpatterns = [
    url(r'^$', PatientListView.as_view(), name='patient_list'),
]

На этом собственно и все, единственное,  во views.py в начало  __icontains  добавьте название ваших полей из модели.

Урок 33 / Добавление поиска по блогу / Блог на Django 2.0

Добавим поисковые возможности в блог. Django ORM позволяет проводить базовые операции по поиску совпадений с помощью, например, фильтра contains (или его версии, учитывающей регистр, icontains). Следующий запрос можно использовать для поиска постов, содержащих слово framework в теле:

from blog.models import Post Post.objects.filter(body__contains='framework')

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

Django предлагает мощный поиск, созданный на основе полнотекстового поиска из PostgreSQL. Модуль django.contrib.postgres включает функции, которые есть в PostgreSQL, но которых лишены другие базы данных, поддерживаемые Django. Больше об этом поиске можно узнать здесь: https://www.postgresql.org/docs/10/static/textsearch.html.

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

Простой поиск

Отредактируйте файл settings.py проекта и добавьте в пункт INSTALLED_APP строку django.contrib.postgres:

INSTALLED_APPS = [ 
    
    'django.contrib.postgres', 
]

Теперь с помощью search можно проводить поиск:

from blog.models import Post Post.objects.filter(body__search='django')

Этот запрос использует PostgreSQL для создания направления поиска поля body и поискового запроса «django». Результаты основаны на сопоставлении направления и запроса.

Поиск в нескольких полях

Иногда может потребоваться искать в нескольких полях. В этом случае нужно определить SearchVector. Построим вектор, который позволит искать в полях title и body модели Post:

from django.contrib.postgres.search import SearchVector 
from blog.models import Post 

Post.objects.annotate( 
    search=SearchVector('title', 'body'), 
).filter(search='django')
Подписывайтесь на телеграм каналы

С помощью annotate и SearchVector для обоих полей получается функциональность, которая будет искать совпадения в заголовке и теле постов.

Полнотекстовый поиск — это интенсивный процесс. Если он будет осуществляться в более чем нескольких сотнях строк, нужно определить функциональный индекс, который совпадает с используемым поисковым направлением. Django предлагает поле SearchVectorField для моделей. Подробно об этом можно почитать здесь: https://docs.djangoproject.com/en/2.0/ref/contrib/postgres/search/#perfomance.

Реализация поиска моделей Django, как сделать так что выводился список статей, где есть совпадения с запросом?

Не выводятся результаты поиска моделей

Сама модель, которая должна находиться:

models.py

class Articles(models.Model):
    title = models.CharField(max_length = 120, verbose_name = "Заголовок")
    post = models.TextField(verbose_name = "Текст")
    image = models.ImageField(blank=True, upload_to='images/blog/%Y/%m/%d', help_text='150x150px',
                              verbose_name='Ссылка картинки')
    date = models.DateTimeField(verbose_name = "Дата")
    category = models.ForeignKey(Category, null = True, blank  = True, on_delete = models.SET_NULL, verbose_name = "Категория") #cjplfybt мягкой связи, когда удаление вторичного объекта не приводит к удалению первичного
    # Добвление лайков
    likes = models.IntegerField(verbose_name='Нравится', default=0)
    dislikes = models.IntegerField(verbose_name='Не нравится', default=0)
    class Meta:
        verbose_name_plural = "Статьи"

    def __str__(self):
        return self.title

вьюха от приложения «search»:
views.py

from django.views.generic import ListView
from django.db.models import Q
from news.models import Articles


class ArticleListView(ListView):
    model = Articles
    template_name = 'search/index.html'

    def get_queryset(self):
        # Получаем не отфильтрованный кверисет всех моделей
        queryset = Articles.objects.all()
        q = self.request.GET.get("q")
        if q:
        # Если 'q' в GET запросе, фильтруем кверисет по данным из 'q'
            return queryset.filter(Q(title__icontains=q) | Q(post__icontains=q))
        return queryset

urls.py

from django.conf.urls import url

from . import views
from .views import ArticleListView

urlpatterns = [
    url(r'^article_search/', ArticleListView.as_view(), name='article_search'),
]

сама форма, которая отвечает за поиск

<form action="{% url 'article_search' %}" method="get">

                      <div>
                          <input type="text" name="q" placeholder="Введите запрос">
                      </div>
                          <button type="submit">Поиск</button>
                      </form>

ну и сам шаблон страницы, куда должен выводиться результат:

index.html

{% extends "mainApp/wrapper.html" %}

{% block content %}
<h2>Поиск</h2>
    {% if article in article_lists %}
        {% for article in article_lists %}
            <article>
                <a href="{{ article.get_absolute_url }}">
                    <h3>{{ article.article_title }}</h3>
                </a>
                {{ article.post|safe }}
                <p><a href="{{ article.get_absolute_url }}">Читать далее</a></p>
            </article>
        {% endfor %}
    {% else %}
        <p>Не найдено публикаций по вашему запросу<br>Попробуйте повторить запрос с другой формулировкой</p>
    {% endif %}
{% endblock %}

Поиск не работает, выдает вариант, что «не найдено публикаций…». Как это можно исправить?

python — какое приложение для поиска Django самое лучшее?

Переполнение стека

  1. Около
  2. Продукты

  3. Для команд
  1. Переполнение стека
    Общественные вопросы и ответы

  2. Переполнение стека для команд
    Где разработчики и технологи делятся частными знаниями с коллегами

  3. Вакансии
    Программирование и связанные с ним технические возможности карьерного роста

  4. Талант
    Нанимайте технических специалистов и создавайте свой бренд работодателя

  5. Реклама
    Обратитесь к разработчикам и технологам со всего мира

  6. О компании

Загрузка…

  1. Авторизоваться
    зарегистрироваться

  2. текущее сообщество

.

python — поиск по нескольким полям в Django

Переполнение стека

  1. Около
  2. Продукты

  3. Для команд
  1. Переполнение стека
    Общественные вопросы и ответы

  2. Переполнение стека для команд
    Где разработчики и технологи делятся частными знаниями с коллегами

  3. Вакансии
    Программирование и связанные с ним технические возможности карьерного роста

  4. Талант
    Нанимайте технических специалистов и создавайте свой бренд работодателя

  5. Реклама
    Обратитесь к разработчикам и технологам со всего мира

.

Пакеты Django: поиск

но только с mysql и postgres.

Описание

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

Модульный поиск Django

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

Прозрачный слой для полнотекстового поиска
с использованием Sphinx
и Django

Интеграция полнотекстового поиска PostgreSQL
с django orm.

Поддержка Elasticsearch для
Django REST Framework

Бэкэнд Xapian для Haystack

Полная интеграция
Algolia в ваш проект Django
.

Простое добавление функции поиска / фильтрации
в проекты Django

Поиск сфинкса в Django

Просмотр на основе классов списка поиска
для Django, с формой

Статические страницы для Haystack

Настраиваемый поиск
на основе AJAX для веб-сайтов
на базе Django.

Найдите Django и
PostgreSQL

Многогранный поисковый движок
в браузере, построенный на основе Django.

Прозрачный слой для полнотекстового поиска
с использованием API Sphinx
и Django

Интегрируйте свой проект Django
с Elastic App Search с легкостью
.

Чистый поисковый движок / паук
на Python с архитектурой плагина
.

Общий и простой способ поиска
моделей в Django

Простые библиотеки для пометки модели
как избранной для легкого доступа в
django admin

Просто инструмент Python для изменения
или замены текстовой строки в
файлах.Этот инструмент довольно
хорош для программистов, если …

Последнее обновление

6 октября 2020 г. 11:02

21 августа 2020 г. 16:57

30 марта 2020 г., 5:08 а.м.

27 января 2015 г. 19:40:59

5 января 2016 г. 14:49

Декабрь9 января 2019 г. 2:13

17 января 2019 г. 11:52:59

3 сентября 2020 г. 5:34

Февраль19 января 2020 г. 12:58

9 марта 2017 г. 8:50

16 января 2017 г. 19:43:59

Декабрь14 января 2012 г. 11:11

6 мая 2013 г. 9:45 ч.

20 марта 2014 г. 19:39

Сентябрь24 января 2012 г. 17:33

28 марта 2013 г. 2:34

5 октября 2020 г. 12:59

Октябрь17 января 2012 г. 12:33

22 августа 2014 г. 9:18

2 октября 2020 г. 12:46

Августа25 января 2018 г. 5:12

Работает с QuerySet И с базой данных, и с Elasticsearch, замените QuerySet и не поддерживает ряд операций или ведет себя некорректно, но работает только с MySQL

.

python — Как добавить поля поиска в Django

Переполнение стека

  1. Около
  2. Продукты

  3. Для команд
  1. Переполнение стека
    Общественные вопросы и ответы

  2. Переполнение стека для команд
    Где разработчики и технологи делятся частными знаниями с коллегами

  3. Вакансии
    Программирование и связанные с ним технические возможности карьерного роста

  4. Талант
    Нанимайте технических специалистов и создавайте свой бренд работодателя

  5. Реклама
    Обратитесь к разработчикам и технологам со всего мира

.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *