Como posso colocar um bloco de conteúdo gerado dinamicamente em um modelo de Django?

StackOverflow https://stackoverflow.com/questions/1024220

  •  06-07-2019
  •  | 
  •  

Pergunta

Eu quero incluir coisas como status do Twitter, ou deliciosas tags, em meus modelos Django.

Essas coisas são dinâmicas, mas regular. Como isso seria feito?

Foi útil?

Solução

Há uma série de maneiras de lidar com isso, então você pode escolher um método que melhor corresponda ao seu próprio estilo pessoal ou requisitos:

  1. Template variável de contexto : como respondida por Alex você pode colocar seu conteúdo em uma variável de contexto que está incluído no contexto de cada modelo criado por cada exibição. Django ainda fornece um mecanismo para fazer isso automaticamente, chamado processador de contexto . Prós: muito simples. Contras:. Não irá atualizar dinamicamente novo conteúdo em navegadores cliente

  2. AJAX dinâmica de carga : como mencionado por Alex e Dave você pode carregar dinamicamente seu conteúdo usando métodos AJAX. Como um exemplo usando jQuery, você iria colocar um espaço reservado no seu modelo de algo como <div id="twitterfeed"></div> e, em seguida, em um bloco de javascript em seu modelo put $("#twitterfeed").load("{% url twitterfeed %}"); onde twitterfeed é um url assim chamado em sua urls.py. Prós: vai dinamicamente navegadores de atualização. Contras:. Pode ser complicado se você não sabe o Javascript

  3. tag Inclusão : Django fornece um tipo de tag template chamado inclusão tag , que é basicamente uma etiqueta modelo personalizado que pode tornar o conteúdo dinâmico. De certa forma, é semelhante a uma variável de contexto, exceto o código para gerar o conteúdo só será chamado quando você usa a tag modelo personalizado no seu modelo em vez de ser chamado para cada vista. Outro benefício é o conteúdo é gerado a partir de um modelo próprio. Você poderia fazer isso com uma variável normal contexto é claro, mas não é tão limpo (IMHO) como usando uma tag de inclusão. Prós: muito simples, limpo. Contras:. Não irá atualizar dinamicamente novo conteúdo em navegadores cliente

Outras dicas

A abordagem mais simples é usar {{ mycontent }} em seu modelo (onde deseja que o conteúdo gerado dinamicamente a aparecer) e colocar a correspondência entre mycontent e seu valor no contexto que você usar para processar o modelo - ou seja, a parte mais fundamental de templates do Django.

Se o que você quer dizer é que você quer Ajax apoio pelo qual Javascript na página é atualizada continuamente esse conteúdo de acordo com o que o servidor quer que seja, em determinado momento, eu sugiro olhar em dojango , o projeto de integração Dojo / Django - não é amadurecer ainda tão plenamente quanto cada um Dojo e Django estão por conta própria (não a versão 0.4 ainda), mas já é utilizável e útil.

Uma técnica comum é deixar um div espaço reservado no conteúdo gerado, em seguida, preencher o div em no lado do cliente através de uma chamada de AJAX de Javascript que você incluir na página.

Isso lhe dá a vantagem de ter um cacheable (carregamento rápido) página principal, com pedaços dinâmicos separados. Dependendo de como viver Você deseja os bits dinâmico, você pode até mesmo cache-los por períodos mais curtos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top