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.pyfbv.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 therequestfor the current request’s HTTP method
Prior art¶
The
render_viewdecorator was forked fromrender_toin the delightful https://github.com/skorokithakis/django-annoying library.The
favicon_fileandfavicon_emojicode is from the superb https://adamj.eu/tech/2022/01/18/how-to-add-a-favicon-to-your-django-site/ blog post.