Как добавить промежуточное ПО Django с пользовательскими настройками в виде пакета Python? - PullRequest
0 голосов
/ 30 августа 2018

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

  1. Установка через PIP
  2. Добавить маршрут к MIDDLEWARE в settings.py.
  3. Чтение пользовательских настроек пользователя из некоторого файла конфигурации.

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

  1. Можно ли установить промежуточное ПО через PIP?
  2. Если это возможно, есть ли хороший пример, похожий на cookiecutter, на котором он базируется? Я пробовал (https://github.com/pydanny/cookiecutter-djangopackage),, но это предполагает, что пакет является автономным приложением, что выглядит как избыточное решение для пакета, состоящего из одного класса.
  3. Как лучше всего разрешить пользователю настраивать поведение объекта промежуточного программного обеспечения? В идеале я хотел бы, чтобы пользователь передавал вызываемый объект с пользовательским поведением, но я не уверен, где пользователь может определить пользовательские настройки / функциональные возможности, которые передаются в промежуточное программное обеспечение при реализации.

Заранее спасибо.

1 Ответ

0 голосов
/ 30 августа 2018

Конечно, можно установить промежуточное ПО через pip. Класс промежуточного программного обеспечения - это просто стандартный класс Python, и он может быть расположен где угодно, если только он находится на пути Python, которым будет установленная библиотека.

Здесь вам не нужны никакие печенья; это для приложений и проектов.

Лучшее место для установки параметров - это стандартный файл настроек проекта, где их можно прочитать, как и любые другие настройки из django.conf.settings.

...