Como faço para usar modelos Django sem o resto do Django?
Quero usar o mecanismo de modelo Django em meu código (Python), mas não estou construindo um site baseado em Django. Como faço para usá-lo sem ter um arquivo settings.py (e outros) e ter que definir a variável de ambiente DJANGO_SETTINGS_MODULE?
A solução é simples. Na verdade, está bem documentado , mas não é muito fácil de encontrar. (Tive de pesquisar - não apareceu quando tentei algumas pesquisas diferentes no Google.)
Veja a documentação do Django (link acima) para uma descrição de algumas das configurações que você pode querer definir (como argumentos de palavra-chave para configurar).
E para obtê-lo de um arquivo: settings.configure (TEMPLATE_DIRS = (".",)) T = get_template ('test.html')
A documentação para settings.configure () está aqui - docs.djangoproject.com/en/1.7/topics/settings
No link "bem documentado" acima, isso é verdade até a versão 1.7. A partir do 1.8, parece que você não precisa settings.configure()mais.
— Olaf Dietsche de
Se você quiser incluir outros modelos ou usar herança de modelo, a solução acima de Bryce é necessária.
— titusjan
Além disso, precisei chamar django.setup () antes do construtor de Template.
A sintaxe do Jinja2 é praticamente a mesma do Django, com poucas diferenças, e você obtém um mecanismo de template muito mais poderoso, que também compila seu template para bytecode (RÁPIDO!).
Eu o uso para modelagem, inclusive no próprio Django, e é muito bom. Você também pode escrever extensões facilmente se algum recurso desejado estiver faltando.
Aqui está uma demonstração da geração de código:
Estou usando o Jinja em um projeto meu porque queria algo com o qual estivesse bastante familiarizado, mas não queria que meus usuários (já que é um aplicativo distribuível) tivessem que instalar o Django. Uma vantagem é que Jinja pode ser instalado com easy_install.
Django pode ser instalado com easy_install também.
Jinga não oferece suporte oficial para Python3 ainda. Segundo o site, ainda é experimental.
Alguma razão em particular para usar os templates do Django? Tanto Jinja quanto Genshi são, na minha opinião, superiores.
Se você realmente quiser, consulte a documentaçãosettings.py do Django em . Especialmente a seção "Usando configurações sem configuração DJANGO_SETTINGS_MODULE". Use algo assim:
Eu também recomendaria jinja2. Há um bom artigo sobre djangovs. jinja2que fornece algumas informações detalhadas sobre por que você deve preferir o último.
Eu prefiro Jinja2 por causa da {% set %}sintaxe e da igualdade do Twig template engine (PHP). É melhor escrever código de plataforma cruzada sempre, mas a diferença de desempenho não é crítica - por exemplo, python sempre funcionará mais devagar do que PHP, então se você precisa de desempenho é melhor criar um site com PHP, Twig e Symfony2 ou outro. Triste, mas é verdade.
— Croll de
@Croll, se seu site realiza cálculos complexos, então as bibliotecas python são incomparavelmente mais rápidas, caso contrário, o gargalo é o banco de dados ou você provavelmente está fazendo algo realmente errado
De acordo com a documentação do Jinja, o suporte ao Python 3 ainda é experimental . Portanto, se você estiver no Python 3 e o desempenho não for um problema, você pode usar o mecanismo de modelo integrado do django.
Django 1.8 introduziu suporte para múltiplos motores de template que requerem uma mudança na forma como os templates são inicializados. Você tem que configurar explicitamente settings.DEBUGqual é usado pelo mecanismo de template padrão fornecido pelo django. Aqui está o código para usar modelos sem usar o resto do django.
Além do que outros escreveram, se você quiser usar Django Template no Django> 1.7, você deve fornecer seu settings.configure (...) chame a variável TEMPLATES e chame django.setup () assim:
Então você pode carregar seu modelo normalmente, a partir de uma string:
E se você escreveu a variável DIRS no .configure, do disco:
Erro do Django: nenhum backend DjangoTemplates está configurado
— Robert Vanden Eynde
Eu diria Jinja também. É definitivamente mais poderoso que o Django Templating Engine e é independente .
Se este fosse um plug externo para um aplicativo Django existente, você poderia criar um comando customizado e usar o mecanismo de modelagem dentro do ambiente de seus projetos. Como isso;
Mas eu não acho que vale a pena usar o Django Templating Engine em vez do Jinja.
Obrigado pela ajuda pessoal. Aqui está mais uma adição. O caso em que você precisa usar tags de modelo personalizado.
Digamos que você tenha esta importante tag de modelo no módulo read.py
Finalmente, aqui está um script Python que se conectará a todos
django.template.base.add_to_builtins("read")levanta um ValueErrorpara mim.
dá TemplateDoesNotExisterro Estou usando django 1.10.1
— Vikrant Singh
Não. Em vez disso, use StringTemplate - não há razão para considerar qualquer outro mecanismo de modelo uma vez que você saiba sobre ele.
A porta Python se parece muito com Java. Não é python.
Eu concordo com as afirmações acima. Jinja 2 é um bom superconjunto de templates Django para uso geral. Acho que eles estão trabalhando para tornar os modelos Django um pouco menos acoplados ao settings.py, mas Jinja deve servir bem para você.
— Clint Ecker
— Hupantingxue
O Google AppEngineusa o mecanismo de modelagem Django, você já deu uma olhada em como eles fazem isso? Você poderia simplesmente usar isso.