Introduction¶
django-fbv
includes utilities to make function-based views cleaner, more efficient, and better tasting. 💥
Why?¶
The Django community continues to be split about whether to use function-based views or class-based views. This library is intended to provide solutions that address some of the annoyances of function-based views.
If you want to read a more detailed critique of class-based views, https://spookylukey.github.io/django-views-the-right-way/ is excellent.
Installation¶
poetry add django-fbv
OR pip install django-fbv
The decorators and views can be used by just importing them. The middleware needs to be installed like typical Django middleware.
Features¶
decorators¶
fbv.decorators.render_html
: decorator to specify the template that a view function response should use when renderingfbv.decorators.render_view
: decorator to specify the template and content type that a view function response should use when renderingfbv.decorators.render_json
: decorator to automatically render dictionaries, Django Models, or Django QuerySets as a JSON response
views¶
fbv.views.html_view
: directly render a template fromurls.py
fbv.views.redirect_view
: redirect to a pattern name fromurls.py
fbv.views.file
: serve a filefbv.views.favicon_file
: serve an image file as the favicon.icofbv.views.favicon_emoji
: serve an emoji as the favicon.ico
middleware¶
fbv.middleware.RequestMethodMiddleware
: adds a boolean property to therequest
for the current request’s HTTP method
Prior art¶
The
render_view
decorator was forked fromrender_to
in the delightful https://github.com/skorokithakis/django-annoying library.The
file
,favicon_file
andfavicon_emoji
code is from the superb https://adamj.eu/tech/2022/01/18/how-to-add-a-favicon-to-your-django-site/ blog post.