Архив рубрики: Python

Несколько конфигов Sphinx

На компьютере разработчика может работать сразу несколько сайтов. Для разных сайтов могут быть заведены свои поисковые индексы Sphinx. Чтобы было удобно управлять разными конфигурациями, лучше завести отдельные конфигурационные файлы для каждого сайта, один общий конфиг и основной конфиг, который использует Sphinx. Вот как это сделать.
Начиная с версии Sphinx 0.9.8 (14 июля 2008 года) доступно задавать конфиг в виде скрипта. Сначала я попробовал сделать, как предложено в статье «Разделение конфигов Sphinx», но у меня не завелось. Возможно, из-за того, что я предпочитаю хранить конфиги в одном месте, а не в каталоге каждого сайта, как автор той статьи. Все мои конфиги Sphinx находятся к каталоге /etc/sphinx
Итого я имею:
1. список конфигов с именами «10-site1.part.conf«, «10-site2.part.conf«. Где число в начале — порядок для дальнейшей сборки в один файл (у меня все десятки). В конфигах обозначены настройки source и index
2. конфиг с общими настроками «90-common.part.conf«. Содержимое:

common
{
    lemmatizer_base     = /usr/local/share/sphinx/dicts
}

indexer
{
lemmatizer_cache    = 128M # from bitrix course
}

searchd
{
listen              = 127.0.0.1:9312
listen            = 9306:mysql41
log        = /usr/lib/tmpfiles.d/log/sphinx/searchd.log
query_log        = /usr/lib/tmpfiles.d/log/sphinx/query.log
read_timeout        = 5
max_children        = 30

pid_file        = /usr/lib/tmpfiles.d/run/sphinx/searchd.pid

seamless_rotate     = 1
preopen_indexes     = 1
unlink_old        = 1

binlog_path        = /usr/lib/tmpfiles.d/lib/sphinx
binlog_max_log_size = 16M
rt_flush_period     = 3600 # from bitrix course
}

3. основной конфиг, который запрашивает Sphinx — sphinx.conf. Этот конфиг собирает воедино все конфиги. Его содежимое:

#!/bin/bash

find /etc/sphinx -type f -name «*.part.conf» -print | xargs cat

Таким образом, если поиск на каком-то сайте мне не требуется, то нужно лишь переименовать файл его конфига (например «10-site1.bak.conf«). А если требуется добавить ещё один сайт, то стоит скопировать уже имеющийся конфиг и исправить его.
Эта схема разбиения конфигов Sphinx отлично работает с Sphinx 2.2.11 на Fedora 24

 

Автор: Олег Ехлаков

Python: настройка URL's в Django

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

1. Находим файл urls.py — у меня это путь D:djangoproblogblogblogurls.py
открываем и вставляем в массив(список) urlpatterns следующую строку 
url(r'', include('blg.urls')),
Напоминаю — blg — так мы назвали наше приложение директория которого будет иметь такое же название и будет находится в директории D:djangoproblogblog, это название еще встречается в файле settings.py(D:djangoproblogblogblog) в конце списка INSTALLED_APPS.
В результате должно быть такое содержимое urls.py:
from django.conf.urls import url,include
from django.contrib import admin
urlpatterns = [
    url(r'', include('blg.urls')),
    url(r'^admin/', admin.site.urls),
]
После проделанного Django будет перенаправлять все запросы 'http://127.0.0.1:8000/' к blg.urls и искать там дальнейшие указания.
!!!обязательным является импортирование модуля include

Далее в директории blg нужно создать файл urls.py cо следующим содержимым:

from django.conf.urls import url, include
from . import views
urlpatterns = [
    url(r'^$', views.post_list, name='post_list'),
]

Первая строка нам знакома, в ней мы импортируем модули  url и include(наличие которого обязательно), во второй импортируем все вьюхи(Views) приложения — которых пока нет. 
Теперь переходим на главную страницу нашего приложения и увидим ошибку окончание примерно которой следующее «….   'post_list' — no attribute 'post_list' «… как побороть ошибку и как сделать свою страницу на html я вам расскажу в следующем посте
Вопросы и обсуждения приветствуются.

Автор: Няшный Человек
Дата публикации: 2016-06-12T17:03:00.000+03:00

Python: Запуск Django проекта

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

Для того чтоб такое не повторялось, я создал данную заметку, которая и вам может понадобиться…

Шаг первый: Открываем калькулятор, закрываем!
Шаг номер два: Входим в виртуальное окружение Django

Шаг номер три: запускаем сервер
Для этого я должен попасть в папку в которой находится manage.py

Вот и все, сервер запущен, приложение — сайт работает!!!

Автор: Няшный Человек
Дата публикации: 2016-06-12T15:37:00.000+03:00

Покоряем Python Django — модели

Что то давно ничего не публиковал, поэтому сейчас решил продолжить создания блога на фреймворке Django на винде.

Пробуем создать модель данных…
в папке где находится ваш manage.py выполните команду
python manage.py startapp blg 
еще не до конца понял суть команды, по факту мы создаем приложение над которым и будет вестись основная работа…

В итоге у меня создалась папка с таким содержимым… смотрите ниже

В одной из папки вашего проекта находим файл settings.py , в массив/список INSTALLED_APPS прям перед закрытием скобки добавляем 'blg', … так мы подключаем наше приложение к Django
В папке blg(папка приложения) заходим в файл models.py и пишем следующий код
from django.db import models
# Create your models here.
from django.utils import timezone
class Post(models.Model):
author = models.ForeignKey('auth.User')
title = models.Charfield(max_length=200)
text = models.TextField()
create_date = models.DateTimeField(default=timezone.now)
published_date = models.DateTimeField(blank=True, null=True)

def publish(self):
self.published_date = timezone.now()
self.save

def __str__(self):
return self.title
  • models.CharField — поле с ограниченным количеством символов
  • models.TextField — поле с неограниченным количеством, как раз подойдет для текста новости..
  • models.DateTimeField — дата и время.
  • models.ForeignKey — ссылка на другую модель.
Внимание, в коде допустил ошибку, кто найдет пишите в комментах ))
Теперь нужно все эти функции применить к базе данных, для начала создадим миграционный файл, переходим в дерикторию где лежит файл manage.py и набираем следующую команду
python manage.py makemigrations blg
Следующие изображение показывает оповещение о удачном процессе

А следующей командой применим наши изменения в модели к базе данных
python manage.py migrate blg
и собственно оповещание при успешном мигрировании
Делал все с выключенным сервером, и через консоль винды. Теперь можно включить сервер, зайти в админку и увидеть новый раздел Post.
На этом сегодня все, спасибо за внимание. Поправляйте если что то не так…

Автор: Няшный Человек
Дата публикации: 2016-04-23T21:59:00.001+03:00