Используйте только некоторые части Django?

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

В частности, я хочу использовать :

  • Модели и абстракция базы данных
  • API кеширования , хотя я хочу избегать поиска в базе данных путем кэширования, а не генерации HTML, и поскольку для последних используется структура кэширования в Django, я пока не уверен, действительно ли это подходит.

Я бы не использовал :

  • шаблонирование
  • urlconfigs

Или, точнее, я не использую HTTP и HTML. Таким образом, в основном у меня есть другая цепочка ввода / вывода, чем обычно.

Может ли это работать?

Моя персональная функция убийцы в Django – это сопоставление объектов / баз данных, которое я могу делать с моделями, поэтому, если есть другая технология (не обязательно быть Python, я нахожусь в стадии разработки, и я довольно не согласен с языками и платформ), которые дают мне те же способности, что тоже было бы здорово.

  • Что лучше, ConfigObj или ConfigParser?
  • используйте внешний скрипт python, чтобы открыть майю и запустить другой скрипт внутри майи
  • Python: подстрочный модуль
  • спрятать список в python
  • Как остановить таймер в Python (tkinter)?
  • Найти заданную разницу между двумя большими массивами (матрицами) в Python
  • Как перейти к REPL (Read, Eval, Print, Loop) из кода Python
  • mtTkinter не завершает потоки
  • 7 Solutions collect form web for “Используйте только некоторые части Django?”

    Я сам использую Django для его сопоставления объектов / db, не используя его urlconfigs. Просто создайте файл djangosettings.py и вставьте необходимую конфигурацию, например:

     DATABASE_ENGINE = 'oracle' DATABASE_HOST = 'localhost' DATABASE_NAME = 'ORCL' DATABASE_USER = 'scott' DATABASE_PASSWORD = 'tiger' 

    Затем в вашем обычном коде Python сделайте

     import os os.environ["DJANGO_SETTINGS_MODULE"] = "djangosettings" 

    перед импортом любых модулей Django. Это позволит вам использовать сопоставления объектов / db Django без фактического проекта Django, поэтому вы можете использовать его для автономных скриптов или других веб-приложений или того, что вы хотите.

    Что касается кеширования, если вы не хотите использовать Django, тогда вам, вероятно, следует решить, что вы используете и оттуда. Я рекомендую использовать CherryPy, который не использует сопоставление URL регулярного выражения Django, но вместо этого автоматически сопоставляет URL-адреса с функциями, основанными на именах функций. В верхней части домашней страницы CherryPy есть пример: http://cherrypy.org/

    У CherryPy есть своя система кэширования, поэтому вы можете выполнить то же самое, что и Django, но без использования системы urlconfig Django.

    Django, являясь веб-картой, чрезвычайно эффективен при создании веб-сайтов. Тем не менее, он также одинаково хорошо подходит для решения проблем в Интернете. Это бесшумное соединение, которое проект гордится. Ничто не мешает вам установить полную версию Django и просто использовать то, что вам нужно. Как правило, очень немногие компоненты Django делают широкие предположения об их использовании.

    В частности:

    • Модели Django ничего не знают о HTML или HTTP.
    • Шаблоны ничего не знают о HTML или HTTP.
    • Систему кеша можно использовать для хранения всего, что можно мариновать .

    Одна из основных вещей, с которыми вам придется столкнуться при попытке использовать Django без веб-сервера, – это правильно настроить среду. Систему ORM и кэша все еще необходимо настроить в settings.py. Существуют документы об использовании django без модуля настроек , которые могут оказаться полезными.

    Я создал шаблонный проект Django, который позволяет вам делать именно это.

    https://github.com/dancaron/Django-ORM

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

    Я предпочитаю использовать метод mix-and-match для использования Python для веб-программирования. 🙂

    У меня нет большого опыта работы с Django, но я бы рекомендовал sqlalchemy искать материал базы данных. Он хорошо работает с другими и дает вам несколько потенциальных слоев абстракции (так что вы можете пойти с чем-то основным или отбросить его, если хотите). Кроме того, вы уже знакомы с ним, если вы когда-либо использовали hibernate / nhibernate.

    Моя любимая часть заключается в том, что у нее есть много возможностей для подключения баз данных (в частности, SQL Server, который django не создал в последний раз, когда я проверял).

    С учетом сказанного мне сказали, что с Django довольно легко отделить функциональность (но никогда не делал этого сам).

    Есть, конечно, другие проекты, которые специально реализуют отдельные части django. Например, TurboGears представляет собой набор из нескольких проектов, которые могут работать сами по себе и вместе образуют полную структуру веб-разработки.

    Для абстракции db SQLAlchemy приходит на ум.

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

    С другой стороны, довольно просто реализовать собственное кэширование, например, используя соленые огурцы . Посмотрите на этот рецепт для декоратора идей и google для «memoize».

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

    Я нашел ответ KeyboardInterrupt, но на него был дан ответ в 2009 году, и я не смог запустить его в Django 1.8.Для последнего Django 1.8 вы можете посмотреть на это, в котором некоторые части поступают из ответа KeyboardInterrupt.

    Структура папок:

     . ├── myApp │  ├── __init__.py │  └── models.py └── my_manage.py 

    myApp – это модуль, содержащий пустые __init__.py и models.py .

    В models.py есть пример модельного класса: из моделей импорта django.db

     class MyModel(models.Model): field = models.CharField(max_length=255) 

    my_manage.py содержит базу данных django, settings_app и действует как django offical manage.py, поэтому вы можете:

     python my_manage.py sql myApp python my_manage.py migrate ...... 

    my_manage.py в my_manage.py являются: из настроек импорта django.conf

     db_conf = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'your_database_name', 'USER': 'your_user_name', 'PASSWORD': 'your_password', 'HOST': 'your_mysql_server_host', 'PORT': 'your_mysql_server_port', } } settings.configure( DATABASES = db_conf, INSTALLED_APPS = ( "myApp", ) ) # Calling django.setup() is required for “standalone” Django u usage # https://docs.djangoproject.com/en/1.8/topics/settings/#calling-django-setup-is-required-for-standalone-django-usage import django django.setup() if __name__ == '__main__': import sys from django.core.management import execute_from_command_line execute_from_command_line(sys.argv) 

    Я поделился примером решения, которое предотвращает манипуляцию Python Path внутри кода:

    https://github.com/askalyuk/django-orm-standalone

    Он содержит автономный пакет доступа к данным, отдельный простой сайт Django и модульный тест.

    Python - лучший язык программирования в мире.