Logicaly separates panels in django-based views. Panels can be loaded via Ajax or rendered directly in View.
Define Panels
In your Project: views.py
class DashboardView1(Panel):
title=u"Übersichts-Seite"
template_name='tests/view1.html'
class Media:
js = ('panelviews/js/test.js', )
css = {'all': ('panelviews/css/test.css', )}
def get_context_data(self):
return {
'additional_context': 'this is a content of additional_context'
}
Define PanelView
class DashboardPanelView(BasePanelView):
template_name = "tests/dashboard.html"
panels = {
'panel1': DashboardView1,
}
def get_context_data(self, *args, **kwargs):
return {'page_context': 'content of page_context'}
Register in URLS.py
In urls.py
from your_project.views import DashboardPanelView
urlpatterns = [
url(r'^test/', DashboardPanelView.as_view(), name='test'),
]
Template variables
In dashboard.html you can access all context variables from DashboardPanelView
{{ additional_context }}
Renders collected js/css from view and panels
{{ view.media }}
Panels can be accessed via panels-variable. Panel-Ajax-Url can be accessed via get_url
{% for name, panel in view.panels.items %}
<tr>
<td>{{ name }}</td>
<td>{{ panel.title }}</td>
<td><a href="{{ panel.get_url }}">{{ panel.get_url }}</a></td>
</tr>
{% endfor %}
Render panel directly without to use ajax
{{ view.panels.panel1.content }}
# or
{{ view.panel1.content }}
Accessing PanelView from Panel
{{ panel.view.VIEW_ATTR }}
For detail examples see test.py and test/tempates
- Bumped Version: 0.1.0