diff --git a/project/jinja2env.py b/project/jinja2env.py index eadb3a6..f7c893f 100644 --- a/project/jinja2env.py +++ b/project/jinja2env.py @@ -4,5 +4,7 @@ from jinja2 import Environment def environment(**options): env = Environment(**options) - env.globals.update({}) + env.globals.update({ + # "url": reverse_url, + }) return env diff --git a/project/main/templates/main/base/base.html b/project/main/templates/main/base/base.html index 468f2e2..d25110f 100644 --- a/project/main/templates/main/base/base.html +++ b/project/main/templates/main/base/base.html @@ -6,7 +6,7 @@ content="width=100%, user-scalable=yes, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> - Django-html demo + {{ title or "Django-html demo" }} {% block body_content %}{% endblock %} diff --git a/project/main/templates/main/base/body_content.html b/project/main/templates/main/base/body_content.html deleted file mode 100644 index 854b3ed..0000000 --- a/project/main/templates/main/base/body_content.html +++ /dev/null @@ -1,7 +0,0 @@ -{% extends "main/base/base.html" %} - -{% block body_content %} -
- {% block content %}{% endblock %} -
-{% endblock %} diff --git a/project/main/templates/main/base/layout.html b/project/main/templates/main/base/layout.html new file mode 100644 index 0000000..d448a71 --- /dev/null +++ b/project/main/templates/main/base/layout.html @@ -0,0 +1,20 @@ +{% extends "main/base/base.html" %} +{% from "main/components/nav.html" import nav %} + +{% block body_content %} +
+

+ {{ title }} +

+ +
+
+ {{ nav(active_section=active_section) }} +
+
+ {% block content %}{% endblock %} +
+
+ +
+{% endblock %} diff --git a/project/main/templates/main/complex_form.html b/project/main/templates/main/complex_form.html new file mode 100644 index 0000000..047a9d0 --- /dev/null +++ b/project/main/templates/main/complex_form.html @@ -0,0 +1,8 @@ +{% extends "main/base/layout.html" %} + + +{% block content %} +

+ This is some complex form content bellow. +

+{% endblock %} diff --git a/project/main/templates/main/components/nav.html b/project/main/templates/main/components/nav.html new file mode 100644 index 0000000..f574c26 --- /dev/null +++ b/project/main/templates/main/components/nav.html @@ -0,0 +1,18 @@ +{% macro nav(active_section) %} + {% macro render_item(title, link) %} + + {{ title }} + + {% endmacro %} + +
+ {{ render_item("Swap Content", "swap-content") }} + {{ render_item("Form Validation", "form-validation") }} + {{ render_item("Complex Form", "complex-form") }} + {{ render_item("Filter List", "filter-list") }} + {{ render_item("Table Inline Edit", "table-inline-edit") }} +
+{% endmacro %} diff --git a/project/main/templates/main/filter_list.html b/project/main/templates/main/filter_list.html new file mode 100644 index 0000000..8e380d7 --- /dev/null +++ b/project/main/templates/main/filter_list.html @@ -0,0 +1,8 @@ +{% extends "main/base/layout.html" %} + + +{% block content %} +

+ This is some filter list content bellow. +

+{% endblock %} diff --git a/project/main/templates/main/form_validation.html b/project/main/templates/main/form_validation.html new file mode 100644 index 0000000..dc554bf --- /dev/null +++ b/project/main/templates/main/form_validation.html @@ -0,0 +1,8 @@ +{% extends "main/base/layout.html" %} + + +{% block content %} +

+ This is some form validation content bellow. +

+{% endblock %} diff --git a/project/main/templates/main/home.html b/project/main/templates/main/home.html index b46c9b5..91707fa 100644 --- a/project/main/templates/main/home.html +++ b/project/main/templates/main/home.html @@ -25,7 +25,7 @@

- + Start demo

diff --git a/project/main/templates/main/swap_content.html b/project/main/templates/main/swap_content.html new file mode 100644 index 0000000..0e792e7 --- /dev/null +++ b/project/main/templates/main/swap_content.html @@ -0,0 +1,8 @@ +{% extends "main/base/layout.html" %} + + +{% block content %} +

+ This is some swappable content bellow. +

+{% endblock %} diff --git a/project/main/templates/main/table_inline_edit.html b/project/main/templates/main/table_inline_edit.html new file mode 100644 index 0000000..83aabf5 --- /dev/null +++ b/project/main/templates/main/table_inline_edit.html @@ -0,0 +1,8 @@ +{% extends "main/base/layout.html" %} + + +{% block content %} +

+ This is some table inline edit content bellow. +

+{% endblock %} diff --git a/project/main/views/__init__.py b/project/main/views/__init__.py index aa2cb2e..f9dcfb8 100644 --- a/project/main/views/__init__.py +++ b/project/main/views/__init__.py @@ -1 +1,6 @@ +from .complex_form import ComplexFormView +from .filter_list import FilterListView +from .form_validation import FormValidationView from .home import HomeView +from .swap_content import SwapContentView +from .table_inline_edit import TableInlineEditView diff --git a/project/main/views/complex_form.py b/project/main/views/complex_form.py new file mode 100644 index 0000000..84244b5 --- /dev/null +++ b/project/main/views/complex_form.py @@ -0,0 +1,7 @@ +from project.main.views.demo_view_base import DemoViewBase + + +class ComplexFormView(DemoViewBase): + template_name = "main/complex_form.html" + active_section = "complex-form" + title = "Complex Form" diff --git a/project/main/views/demo_view_base.py b/project/main/views/demo_view_base.py new file mode 100644 index 0000000..d444d0c --- /dev/null +++ b/project/main/views/demo_view_base.py @@ -0,0 +1,20 @@ +from typing import Any + +from django.core.handlers.wsgi import WSGIRequest +from django.http import HttpResponse +from django.views.generic import TemplateView + + +class DemoViewBase(TemplateView): + active_section = None + title = None + + def get_context_data(self, **kwargs) -> dict[str, Any]: + return { + "title": self.title, + "active_section": self.active_section, + } + + def get(self, request: WSGIRequest, *args, **kwargs) -> HttpResponse: + context = self.get_context_data(**kwargs) + return self.render_to_response(context) diff --git a/project/main/views/filter_list.py b/project/main/views/filter_list.py new file mode 100644 index 0000000..831c811 --- /dev/null +++ b/project/main/views/filter_list.py @@ -0,0 +1,7 @@ +from project.main.views.demo_view_base import DemoViewBase + + +class FilterListView(DemoViewBase): + template_name = "main/filter_list.html" + active_section = "filter-list" + title = "Filter List" diff --git a/project/main/views/form_validation.py b/project/main/views/form_validation.py new file mode 100644 index 0000000..6d64900 --- /dev/null +++ b/project/main/views/form_validation.py @@ -0,0 +1,7 @@ +from project.main.views.demo_view_base import DemoViewBase + + +class FormValidationView(DemoViewBase): + template_name = "main/form_validation.html" + active_section = "form-validation" + title = "Form Validation" diff --git a/project/main/views/swap_content.py b/project/main/views/swap_content.py new file mode 100644 index 0000000..dc0b875 --- /dev/null +++ b/project/main/views/swap_content.py @@ -0,0 +1,7 @@ +from project.main.views.demo_view_base import DemoViewBase + + +class SwapContentView(DemoViewBase): + template_name = "main/swap_content.html" + active_section = "swap-content" + title = "Swap Content" diff --git a/project/main/views/table_inline_edit.py b/project/main/views/table_inline_edit.py new file mode 100644 index 0000000..3c4486d --- /dev/null +++ b/project/main/views/table_inline_edit.py @@ -0,0 +1,7 @@ +from project.main.views.demo_view_base import DemoViewBase + + +class TableInlineEditView(DemoViewBase): + template_name = "main/table_inline_edit.html" + active_section = "table-inline-edit" + title = "Table Inline Edit" diff --git a/project/urls.py b/project/urls.py index ec3b0b8..1b50b8f 100644 --- a/project/urls.py +++ b/project/urls.py @@ -4,4 +4,9 @@ from project.main import views urlpatterns = [ path("", views.HomeView.as_view(), name="home"), + path("swap-content", views.SwapContentView.as_view(), name="swap-content"), + path("filter-list", views.FilterListView.as_view(), name="filter-list"), + path("form-validation", views.FormValidationView.as_view(), name="form-validation"), + path("complex-form", views.ComplexFormView.as_view(), name="complex-form"), + path("table-inline-edit", views.TableInlineEditView.as_view(), name="table-inline-edit"), ]