檢查django-crispyforms的bootstrap3模板包中的field.html模板,我注意到引用了一個額外的上下文變量「tag」。你可以在模板的line 12和line 41上看到。如何在用於呈現特定表單字段的field.html模板的上下文中爲「標記」指定值?如何將額外的上下文傳遞給django-crispy-forms字段模板?
3
A
回答
0
tag
上下文變量在模板中設置,而不是視圖。如果您使用內置的bootstrap3模板包,則在包含field.html
的模板中定義它。如果包含模板未定義tag
,則默認爲div
。
例如:table_inline_formset.html
line 41。
1
你可以只覆蓋標準香脆場這樣的:
class LinkField(Field):
def __init__(self, *args, **kwargs):
self.view_name = kwargs.pop('view_name')
super(LinkField, self).__init__(*args, **kwargs)
def render(self, form, form_style, context, template_pack=CRISPY_TEMPLATE_PACK):
if hasattr(self, 'wrapper_class'):
context['wrapper_class'] = self.wrapper_class
if hasattr(self, 'view_name'):
context['view_name'] = self.view_name
html = ''
for field in self.fields:
html += render_field(field, form, form_style, context, template=self.template, attrs=self.attrs, template_pack=template_pack)
return html
然後,只需通過附加變量(「VIEW_NAME」)的重寫模板。
佈局它看起來就像這樣:
Layout(
LinkField('field_name', template='path_to_overridden_template',
view_name='variable_to_pass')
)
1
我作爲指導palestamp的響應建立一個更通用CustomCrispyField
。您可以將extra_context
作爲kwarg
傳遞給CustomCrispyField
。 extra_context
只是我從我的自定義模板中訪問的字典,我從crispy_forms
中複製而來。
from crispy_forms.layout import Field
from crispy_forms.utils import TEMPLATE_PACK
class CustomCrispyField(Field):
extra_context = {}
def __init__(self, *args, **kwargs):
self.extra_context = kwargs.pop('extra_context', self.extra_context)
super(CustomCrispyField, self).__init__(*args, **kwargs)
def render(self, form, form_style, context, template_pack=TEMPLATE_PACK, extra_context=None, **kwargs):
if self.extra_context:
extra_context = extra_context.update(self.extra_context) if extra_context else self.extra_context
return super(CustomCrispyField, self).render(form, form_style, context, template_pack, extra_context, **kwargs)
而且我會使用它,像這樣在我的表格:
self.helper.layout=Div(CustomCrispyField('my_model_field', css_class="col-xs-3", template='general/custom.html', extra_context={'css_class_extra': 'value1', 'caption': 'value2'})
我的模板需要有類似於下面的代碼:
{% crispy_field field %}
<button class="btn {{ css_class_extra }}">{{ caption }}</button>
相關問題
- 1. 將額外的上下文傳遞給Django Haystack模板
- 2. 如何使用上下文將參數傳遞給Thymeleaf模板?
- 3. AngularJS 2:將組件額外的屬性傳遞給模板
- 4. MPTT - 如何將每個節點的額外數據傳遞給模板?
- 5. Django。不將外鍵傳遞給模板
- 6. 如何將上下文傳遞給AsyncTask?
- 7. 如何將額外的額外參數傳遞給批處理文件?
- 8. 如何上下文對象傳遞給與NG-模板
- 9. 如何將額外的參數傳遞給Jquery自動填充字段?
- 10. 將額外的數據傳遞給jqGrid
- 11. 如何將視圖中的上下文變量傳遞給Django模板中的自定義字段/小部件?
- 12. Android:如何將額外字符串傳遞給電子郵件?
- 13. 如何將值傳遞給玉模板
- 14. Django-Haystack:如何通過FacetedSearchView傳遞額外的上下文
- 15. 如何將模板作爲模板參數傳遞給模板?
- 16. 將模板傳遞給deque
- 17. 如何從上下文中將上下文傳遞給示例
- 18. 將額外參數傳遞給Devise new_user_session_path
- 19. 將額外參數傳遞給asmx webservice
- 20. 將額外參數傳遞給EventHandler
- 21. 將額外值傳遞給光標
- 22. 如何將Django模板上下文變量傳遞給JS函數
- 23. 如何從上下文菜單將數據傳遞給模態?
- 24. 將變量傳遞給模板文件
- 25. 如何將段落值傳遞給模板?
- 26. 將額外的實例變量傳遞給devise_invitable電子郵件模板
- 27. 如何將額外的列傳遞給SSIS中的表?
- 28. 如何將額外的參數傳遞給自定義的segue?
- 29. 在Django中傳遞給模板的上下文
- 30. 將字段名稱傳遞給函數模板