Django에서 템플릿 태그 작성
-
05-07-2019 - |
문제
Django로 작성된 CMS를 사용자 정의하려고합니다. 컨텐츠 편집기는 충분히 유연하지 않으므로 더 나은 솔루션을 만들려고합니다.
과도하게 설명하지 않고 조금 비슷합니다. Django-Better-Chunks 또는 django-flatblocks
. 템플릿 내에서 편집 가능한 영역을 완전히 설정합니다. 이 편집 가능한 영역을 문자열과 객체 인스턴스의 혼합에 바인딩하고 싶습니다. 한 가지 예는 하나의 제품을 기반으로 여러 편집 가능한 영역이 있습니다.
{% block product_instance "title" %}
{% block product_instance "product description" %}
그래서 당신이 다른 제품과 다음과 같은 견해를 가지고 있다면 product_instance
그 둘 blocks
다른 데이터를 보여줄 것입니다. 또한 문자열 부분을 통과하는 현장 전체 블록에 사용되는 것을 볼 수 있습니다. 기본적으로 1 인치 식별자를 통과 할 수 있기를 원합니다.
그러나 나는 여기서 두 가지 전선에서 정말로 어려움을 겪고 있습니다.
혼합 식별자와 실제 내용 사이의 관계를 어떻게 정의합니까? "
block
"인스턴스? 내용 유형이 여기에 특징이있을 수 있지만 어디에서 시작 해야할지 전혀 모른다!위의 구문을 읽고 렌더링을 위해 객체로 변환하기 위해 템플릿 태그를 어떻게 작성합니까?
해결책
이를 위해 포함 태그를 만들고 다음과 같이 사용할 수 있습니다.
{% 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
제휴하지 않습니다 StackOverflow