Skip to main content

Django render_partial tag allows inserting rendered views into templates

Project description

Installation

  1. pip install django_render_partial

  2. Add 'django_render_partial' to INSTALLED_APPS

  3. Ensure that 'django.template.context_processors.request' is in TEMPLATES['OPTIONS']['context_processors']

Usage

Write a template for partial view, e.g. partial_view.html:

<p>{{ arg1 }} + {{ arg2 }} = {{ result }}</p>

Write a partial view:

def partial_view(request, *args, **kwargs):
    result = kwargs['arg1'] + kwargs['arg2']
    kwargs['result'] = result
    return render(request, 'partial_view.html', kwargs)

if you are using function-based views, or:

class PartialView(TemplateView):
    template_name = 'partial_view.html'

    def get_context_data(self, **kwargs):
        result = kwargs['arg1'] + kwargs['arg2']
        kwargs['result'] = result
        return super(PartialView, self).get_context_data(**kwargs)

if you are using class-based views.

Add it to urls.py:

url(r'^partial-view/(?P<arg1>\w+)/(?P<arg2>\w+)/$',
    partial_view,
    name='partial_view'),

or:

url(r'^partial-view/(?P<arg1>\w+)/(?P<arg2>\w+)/$',
    PartialView.as_view(),
    name='partial_view'),

In your template:

{% load render_partial %}
{% with some_var=2 %}
  {% render_partial 'partial_view' arg1=40 arg2=some_var %}
{% endwith %}

The render_partial tag would be rendered to:

<p>40 + 2 = 42</p>

Note that the with tag above is not required for render_partial to work. It is used to show that render_partial accepts variables. Every argument will be evaluated against context except for the names of any keyword arguments.

If you don’t want to expose your partial view in urls.py, you can also use fully qualified dot separated view name:

{% render_partial 'partial_test.views.PartialView' arg1=40 arg2=some_var %}
{% render_partial 'partial_test.views.partial_view' arg1=40 arg2=some_var %}

IMPORTANT: the calling template must receive a context variable called request containing the original HttpRequest. Don’t forget to add 'django.template.context_processors.request' to TEMPLATES['OPTIONS']['context_processors'].

Adapted from https://djangosnippets.org/snippets/1568/

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-render-partial-0.4.tar.gz (3.3 kB view details)

Uploaded Source

File details

Details for the file django-render-partial-0.4.tar.gz.

File metadata

  • Download URL: django-render-partial-0.4.tar.gz
  • Upload date:
  • Size: 3.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Python-urllib/3.6

File hashes

Hashes for django-render-partial-0.4.tar.gz
Algorithm Hash digest
SHA256 7834485bbf061ee7c4f3e0d32257b5be3214bf8698a51638383ff754a08fc1e5
MD5 87ce1aab3953f6c33f7288c46a0f02ea
BLAKE2b-256 d2bceafbab58dabd9e72e4a375646d6231b27df38d7cc92066de3b4fa9f8fe9d

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page