문제

Django로 작성된 CMS를 사용자 정의하려고합니다. 컨텐츠 편집기는 충분히 유연하지 않으므로 더 나은 솔루션을 만들려고합니다.

과도하게 설명하지 않고 조금 비슷합니다. Django-Better-Chunks 또는 django-flatblocks. 템플릿 내에서 편집 가능한 영역을 완전히 설정합니다. 이 편집 가능한 영역을 문자열과 객체 인스턴스의 혼합에 바인딩하고 싶습니다. 한 가지 예는 하나의 제품을 기반으로 여러 편집 가능한 영역이 있습니다.

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

그래서 당신이 다른 제품과 다음과 같은 견해를 가지고 있다면 product_instance 그 둘 blocks 다른 데이터를 보여줄 것입니다. 또한 문자열 부분을 통과하는 현장 전체 블록에 사용되는 것을 볼 수 있습니다. 기본적으로 1 인치 식별자를 통과 할 수 있기를 원합니다.

그러나 나는 여기서 두 가지 전선에서 정말로 어려움을 겪고 있습니다.

  1. 혼합 식별자와 실제 내용 사이의 관계를 어떻게 정의합니까? "block"인스턴스? 내용 유형이 여기에 특징이있을 수 있지만 어디에서 시작 해야할지 전혀 모른다!

  2. 위의 구문을 읽고 렌더링을 위해 객체로 변환하기 위해 템플릿 태그를 어떻게 작성합니까?

도움이 되었습니까?

해결책

이를 위해 포함 태그를 만들고 다음과 같이 사용할 수 있습니다.

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

태그를 정의하려면 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, ...}

그런 다음 항목에 대해 HTML을 반환하는 템플릿이 필요합니다.

<h1>{{item.title}}</h1>
{{item_form}}
... add some conditional statements depending on extra vars
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top