Use apenas algumas partes do Django?

votos
34

Eu gosto de Django, mas para uma aplicação em particular que eu gostaria de usar apenas partes dele, mas eu não estou bastante familiarizado com a forma como Django funciona no interior, por isso, talvez alguém pode me apontar na direção certa, como o que eu tenho que Confira.

Especificamente, eu quero usar :

  • O modelos e banco de dados de abstração
  • O caching API , embora eu quero evitar pesquisas de banco de dados, caching, não HTML geração, e uma vez que a estrutura de armazenamento em cache no Django é destinado para o último, eu ainda não tenho certeza se isso é realmente apropriado.

Eu não usar :

  • templating
  • urlconfigs

Ou, mais exatamente, eu não estou nem usando HTTP ou HTML. Então, basicamente, que tem uma cadeia de entrada / saída diferente do que o habitual.

Pode este trabalho?

Minha característica do assassino pessoal em Django é o mapeamento objeto / banco de dados que eu posso fazer com os modelos, por isso, se há uma outra tecnologia (não tem que ser Python, estou na fase de projeto e estou bastante agnósticos sobre línguas e plataformas) que me dá as mesmas habilidades, que seria ótimo também.

Publicado 19/11/2008 em 18:14
fonte usuário
Em outras línguas...                            


8 respostas

votos
42

Eu mesmo uso Django por sua mapeamento objeto / db sem usar seus urlconfigs. Basta criar um arquivo chamado djangosettings.pye insira a configuração necessária, por exemplo:

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

Então no seu código Python regular, fazer

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

antes de importar quaisquer módulos Django. Isso permitirá que você usar mapeamentos objeto / db do Django sem realmente ter um projeto Django, então você pode usá-lo para scripts autônomos ou outros aplicativos da web ou o que quiser.

Como para o cache, se você não quer usar o Django, então você provavelmente deve decidir o que você está usando e de lá ir. Eu recomendo o uso CherryPy, que não usa Django-estilo de mapeamento URL expressão regular, mas em vez mapeia automaticamente URLs para funções com base nos nomes de função. Há um exemplo bem no topo da página inicial CherryPy: http://cherrypy.org/

CherryPy tem seu próprio sistema de cache, para que possa realizar exatamente a mesma coisa que o Django faz, mas sem a necessidade de usar o sistema urlconfig do Django.

Respondeu 19/11/2008 em 19:17
fonte usuário

votos
12

Django, sendo um framework web, é extremamente eficiente na criação de websites. No entanto, também é igualmente adequado para resolver problemas fora da web. Este é o baixo acoplamento que o projeto se orgulha de. Nada o impede de instalar uma versão completa do Django, e utilizando apenas o que você precisa. Como regra geral, muito poucos componentes de Django fazer largas hipóteses sobre seu uso.

Especificamente:

Uma das principais coisas que você vai enfrentar ao tentar usar o Django sem um servidor web é configurar o ambiente corretamente. O sistema ORM eo cache ainda precisa ser configurado em settings.py. Há docs sobre usando Django sem um módulo de configuração que você pode achar útil.

Respondeu 20/11/2008 em 05:46
fonte usuário

votos
7

Eu criei um projeto Django modelo que permite que você faça exatamente isso.

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

Basta seguir as instruções e você pode gravar arquivos python autônomos que utilizam a funcionalidade de banco de dados do Django, sem ter que usar urlconf, pontos de vista, etc.

Respondeu 28/05/2012 em 21:04
fonte usuário

votos
2

I tendem a preferir uma abordagem mix-and-match de usar Python para programação web. :-)

Eu não tenho muita experiência com Django, mas eu recomendo dando sqlalchemy um olhar para as coisas de banco de dados. Ele funciona bem com os outros e dá-lhe várias camadas potenciais de abstração (assim você pode ir com algo básico ou ajustar o inferno fora dele se você quiser). Além disso, você já vai ser um pouco familiarizado com isso, se você já usou hibernate / nhibernate.

Minha parte favorita é que ele tem um monte de opções para bancos de dados para conectar-se (mais notavelmente SQL Server, que Django não têm construído em última vez que verifiquei).

Com isso dito, eu disse que, com Django, é muito fácil de dissociar funcionalidade (mas nunca fez isso eu mesmo).

Respondeu 19/11/2008 em 18:24
fonte usuário

votos
2

Há, naturalmente, outros projetos lá fora, que especificamente implementar peças únicas de Django. TurboGears por exemplo, é uma coleção de vários projetos que podem trabalhar por si e juntos formam um quadro completo de desenvolvimento web.

Para a abstração db SQLAlchemy vem à mente.

Em relação à parte cache: Eu não estou ciente de qualquer projeto independente que implementa uma instalação de armazenamento em cache genérico.

Por outro lado, deve ser bastante fácil de implementar seu próprio cache, por exemplo, utilizando pickles . Ter um olhar para esta receita para um decorador de ideias e no Google por "memoize".

Também tenha em mente que o seu banco de dados tem seu próprio mecanismo de armazenamento em cache, então talvez você nem precisa se preocupar com os detalhes.

Respondeu 19/11/2008 em 18:23
fonte usuário

votos
1

Eu encontrei a resposta de KeyboardInterrupt mas foi respondida em 2009 e eu não conseguiu executá-lo no Django 1.8.For recente Django 1.8, você pode ter um olhar para este, em que algumas partes vêm de resposta de KeyboardInterrupt.

A estrutura da pasta é:

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

myApp é um módulo, contém um vazio __init__.pye models.py.

Há um exemplo classe de modelo em models.py: a partir de modelos de importação django.db

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

my_manage.py contém banco de dados do Django, configurações installed_app e atua como Django manage.py oficial, então você pode:

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

Os códigos my_manage.pysão: a partir das definições de importação 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)
Respondeu 09/09/2015 em 11:09
fonte usuário

votos
1

Eu compartilhei um exemplo de solução, o que impede Path manipulação Python dentro do código:

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

Ele contém um pacote de acesso de dados independente, um local simples separados Django e uma unidade de teste.

Respondeu 21/01/2013 em 02:42
fonte usuário

votos
0

A fim de usar do Django modelos e abstração de banco de dados Eu explico uma maneira limpa para usá-los fora de Django aqui: https://stackoverflow.com/a/49515366/2682613

Django versão 2.0.2

Respondeu 27/03/2018 em 14:34
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more