Pergunta

Eu estou tentando personalizar um CMS escritos em Django. Os editores de conteúdo são o suficiente para não flexível, de modo que estou tentando chegar a uma solução melhor.

Sem sobre explicando-lo, eu gostaria que fosse um pouco como django-melhor-pedaços ou django-flatblocks. Você configura uma região editável inteiramente a partir do modelo. Eu quero ligar estas regiões editáveis ??de uma mistura de cordas e instâncias de objetos. Um exemplo seria ter várias regiões editáveis ??com base em um único produto:

{% block product_instance "title" %}
{% block product_instance "product description" %}

Então, se você tem uma vista com outro produto como product_instance aqueles dois blocks iria mostrar dados diferentes. Também gostaria de ver a existência de uso para blocos de todo o site que só atravessar a parte de cordas. Essencialmente, eu gostaria de ser capaz de passar identificadores 1-infinito.

Mas eu estou realmente lutando em duas frentes aqui:

  1. Como faço para definir a relação entre o identificador mista eo conteúdo instância "block" real? Eu tenho um sentimento contenttypes pode apresentam aqui, mas eu tenho realmente nenhuma idéia de onde começar a procurar!

  2. E como faço para escrever uma tag para ler a sintaxe e converter esse acima em um objeto para renderização?

Foi útil?

Solução

Para isso, você pode criar uma etiqueta de inclusão e usá-lo como:

{% load my_tags %}
{% product bicycle <extra vars ...> %}

Para definir a tag, adicionar ao seu app / templatetags / mytags.py:

@register.inclusion_tag('results.html')
def product(item, *extra):
    #maybe repackage extra variables
    #and add them to the returned dictionary
    item_form = ItemForm(item) #form.ModelForm instance
    return {'item': item, 'item_form':item_form, ...}

Em seguida, você precisará de um modelo que retorna HTML para o item:

<h1>{{item.title}}</h1>
{{item_form}}
... add some conditional statements depending on extra vars
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top