Django-jet: Django 1.11 Support

Created on 5 Apr 2017  Â·  15Comments  Â·  Source: geex-arts/django-jet

Are there any plans to support 1.11? I know what the problem is but only a limited idea of how to sort it.

Most helpful comment

Released in 1.0.6

All 15 comments

I'm getting "context must be a dict rather than RequestContext." error with jet.dashboard on 1.11

@kamilgregorczyk yup, a dict is now required for context the changes can be made and are backwards compatible. I had to do so with my own auth backend but I don't know where to start with jet.

From the docs:

django.Template.render() prohibits non-dict context¶

For compatibility with multiple template engines, django.Template.render() must receive a dictionary of context rather than Context or RequestContext. If you were passing either of the two classes, pass a dictionary instead – doing so is backwards-compatible with older versions of Django.

Can you add here the traceback of your problems?

Here you go:

Template error:
In template /home/mat/.virtualenvs/jbcarcenv/lib/python3.6/site-packages/jet/templates/admin/base.html, error at line 13
   context must be a dict rather than RequestContext.   3 : {% jet_get_current_theme as THEME %}
   4 : {% jet_get_current_version as JET_VERSION %}
   5 : {% block html %}<html lang="{{ LANGUAGE_CODE|default:"en-us" }}" {% if LANGUAGE_BIDI %}dir="rtl"{% endif %}>
   6 : <head>
   7 : <title>{% block title %}{% endblock %}</title>
   8 : <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
   9 : <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui">
   10 : <link rel="stylesheet" type="text/css" href="{% block stylesheet %}{% static "admin/css/base.css" %}{% endblock %}" />
   11 : 
   12 : <link rel="stylesheet" type="text/css" href="{% static "jet/css/vendor.css" as url %}{{ url|jet_append_version }}" />
   13 : <link rel="stylesheet" type="text /css" href="{% static "jet/c ss/icons/style.css" as url %}{{ url|jet_append_version }}" />
   14 : <link rel="stylesheet" type="text/css" href="{% static "jet/css/themes/"|add:THEME|add:"/base.css" as url %}{{ url|jet_append_version }}" class="base-stylesheet" />
   15 : <link rel="stylesheet" type="text/css" href="{% static "jet/css/themes/"|add:THEME|add:"/select2.theme.css" as url %}{{ url|jet_append_version }}" class="select2-stylesheet" />
   16 : <link rel="stylesheet" type="text/css" href="{% static "jet/css/themes/"|add:THEME|add:"/jquery-ui.theme.css" as url %}{{ url|jet_append_version }}" class="jquery-ui-stylesheet" />
   17 : 
   18 : {% block extrastyle %}{% endblock %}
   19 : {% if LANGUAGE_BIDI %}<link rel="stylesheet" type="text/css" href="{% block stylesheet_rtl %}{% static "admin/css/rtl.css" %}{% endblock %}" />{% endif %}
   20 : 
   21 : <script type="text/javascript" charset="utf-8">
   22 :     var DATE_FORMAT = "{% jet_get_date_format %}";
   23 :     var TIME_FORMAT = "{% jet_get_time_format %}";


Traceback:

File "/home/mat/.virtualenvs/jbcarcenv/lib/python3.6/site-packages/django/core/handlers/exception.py" in inner
  41.             response = get_response(request)

File "/home/mat/.virtualenvs/jbcarcenv/lib/python3.6/site-packages/django/core/handlers/base.py" in _get_response
  217.                 response = self.process_exception_by_middleware(e, request)

File "/home/mat/.virtualenvs/jbcarcenv/lib/python3.6/site-packages/channels/handler.py" in process_exception_by_middleware
  237.             return super(AsgiHandler, self).process_exception_by_middleware(exception, request)

File "/home/mat/.virtualenvs/jbcarcenv/lib/python3.6/site-packages/django/core/handlers/base.py" in _get_response
  215.                 response = response.render()

File "/home/mat/.virtualenvs/jbcarcenv/lib/python3.6/site-packages/django/template/response.py" in render
  107.             self.content = self.rendered_content

File "/home/mat/.virtualenvs/jbcarcenv/lib/python3.6/site-packages/django/template/response.py" in rendered_content
  84.         content = template.render(context, self._request)

File "/home/mat/.virtualenvs/jbcarcenv/lib/python3.6/site-packages/django/template/backends/django.py" in render
  66.             return self.template.render(context)

File "/home/mat/.virtualenvs/jbcarcenv/lib/python3.6/site-packages/django/template/base.py" in render
  207.                     return self._render(context)

File "/home/mat/.virtualenvs/jbcarcenv/lib/python3.6/site-packages/django/template/base.py" in _render
  199.         return self.nodelist.render(context)

File "/home/mat/.virtualenvs/jbcarcenv/lib/python3.6/site-packages/django/template/base.py" in render
  990.                 bit = node.render_annotated(context)

File "/home/mat/.virtualenvs/jbcarcenv/lib/python3.6/site-packages/django/template/base.py" in render_annotated
  957.             return self.render(context)

File "/home/mat/.virtualenvs/jbcarcenv/lib/python3.6/site-packages/django/template/loader_tags.py" in render
  177.             return compiled_parent._render(context)

File "/home/mat/.virtualenvs/jbcarcenv/lib/python3.6/site-packages/django/template/base.py" in _render
  199.         return self.nodelist.render(context)

File "/home/mat/.virtualenvs/jbcarcenv/lib/python3.6/site-packages/django/template/base.py" in render
  990.                 bit = node.render_annotated(context)

File "/home/mat/.virtualenvs/jbcarcenv/lib/python3.6/site-packages/django/template/base.py" in render_annotated
  957.             return self.render(context)

File "/home/mat/.virtualenvs/jbcarcenv/lib/python3.6/site-packages/django/template/loader_tags.py" in render
  177.             return compiled_parent._render(context)

File "/home/mat/.virtualenvs/jbcarcenv/lib/python3.6/site-packages/django/template/base.py" in _render
  199.         return self.nodelist.render(context)

File "/home/mat/.virtualenvs/jbcarcenv/lib/python3.6/site-packages/django/template/base.py" in render
  990.                 bit = node.render_annotated(context)

File "/home/mat/.virtualenvs/jbcarcenv/lib/python3.6/site-packages/django/template/base.py" in render_annotated
  957.             return self.render(context)

File "/home/mat/.virtualenvs/jbcarcenv/lib/python3.6/site-packages/django/template/loader_tags.py" in render
  72.                 result = block.nodelist.render(context)

File "/home/mat/.virtualenvs/jbcarcenv/lib/python3.6/site-packages/django/template/base.py" in render
  990.                 bit = node.render_annotated(context)

File "/home/mat/.virtualenvs/jbcarcenv/lib/python3.6/site-packages/django/template/base.py" in render_annotated
  957.             return self.render(context)

File "/home/mat/.virtualenvs/jbcarcenv/lib/python3.6/site-packages/django/template/base.py" in render
  1040.             output = self.filter_expression.resolve(context)

File "/home/mat/.virtualenvs/jbcarcenv/lib/python3.6/site-packages/django/template/base.py" in resolve
  708.                 obj = self.var.resolve(context)

File "/home/mat/.virtualenvs/jbcarcenv/lib/python3.6/site-packages/django/template/base.py" in resolve
  849.             value = self._resolve_lookup(context)

File "/home/mat/.virtualenvs/jbcarcenv/lib/python3.6/site-packages/django/template/base.py" in _resolve_lookup
  911.                             current = current()

File "/home/mat/.virtualenvs/jbcarcenv/lib/python3.6/site-packages/django/template/loader_tags.py" in super
  86.             return mark_safe(self.render(self.context))

File "/home/mat/.virtualenvs/jbcarcenv/lib/python3.6/site-packages/django/template/loader_tags.py" in render
  72.                 result = block.nodelist.render(context)

File "/home/mat/.virtualenvs/jbcarcenv/lib/python3.6/site-packages/django/template/base.py" in render
  990.                 bit = node.render_annotated(context)

File "/home/mat/.virtualenvs/jbcarcenv/lib/python3.6/site-packages/django/template/base.py" in render_annotated
  957.             return self.render(context)

File "/home/mat/.virtualenvs/jbcarcenv/lib/python3.6/site-packages/django/template/defaulttags.py" in render
  322.                 return nodelist.render(context)

File "/home/mat/.virtualenvs/jbcarcenv/lib/python3.6/site-packages/django/template/base.py" in render
  990.                 bit = node.render_annotated(context)

File "/home/mat/.virtualenvs/jbcarcenv/lib/python3.6/site-packages/django/template/base.py" in render_annotated
  957.             return self.render(context)

File "/home/mat/.virtualenvs/jbcarcenv/lib/python3.6/site-packages/django/template/loader_tags.py" in render
  72.                 result = block.nodelist.render(context)

File "/home/mat/.virtualenvs/jbcarcenv/lib/python3.6/site-packages/django/template/base.py" in render
  990.                 bit = node.render_annotated(context)

File "/home/mat/.virtualenvs/jbcarcenv/lib/python3.6/site-packages/django/template/base.py" in render_annotated
  957.             return self.render(context)

File "/home/mat/.virtualenvs/jbcarcenv/lib/python3.6/site-packages/django/template/base.py" in render
  1040.             output = self.filter_expression.resolve(context)

File "/home/mat/.virtualenvs/jbcarcenv/lib/python3.6/site-packages/django/template/base.py" in resolve
  708.                 obj = self.var.resolve(context)

File "/home/mat/.virtualenvs/jbcarcenv/lib/python3.6/site-packages/django/template/base.py" in resolve
  849.             value = self._resolve_lookup(context)

File "/home/mat/.virtualenvs/jbcarcenv/lib/python3.6/site-packages/django/template/base.py" in _resolve_lookup
  911.                             current = current()

File "/home/mat/.virtualenvs/jbcarcenv/lib/python3.6/site-packages/jet/dashboard/dashboard.py" in render_tools
  168.         return render_to_string('jet.dashboard/dashboard_tools.html', context)

File "/home/mat/.virtualenvs/jbcarcenv/lib/python3.6/site-packages/django/template/loader.py" in render_to_string
  68.     return template.render(context, request)

File "/home/mat/.virtualenvs/jbcarcenv/lib/python3.6/site-packages/django/template/backends/django.py" in render
  64.         context = make_context(context, request, autoescape=self.backend.engine.autoescape)

File "/home/mat/.virtualenvs/jbcarcenv/lib/python3.6/site-packages/django/template/context.py" in make_context
  287.         raise TypeError('context must be a dict rather than %s.' % context.__class__.__name__)

Exception Type: TypeError at /admin/
Exception Value: context must be a dict rather than RequestContext.

@f1nality :+1:

Update to Django-1.11 today and got same issue. Not sure if related to this one, https://code.djangoproject.com/ticket/27722?cversion=0&cnum_hist=3
I verified the workground in that ticket and it is working for me.

Django #27722 mentioned above is fixed but with Jet, this error still there and the quick workaround is same,
in django/template/backends/django.py, add a line at 63,
62 def render(self, context=None, request=None):
+63 if isinstance(context, dict): # <-- my temporary workaround
64 context = make_context(context, request, autoescape=self.backend.engine.autoescape)
65 try:

I don't step into the root cause yet as I am not sure if it is still Django bug or django-jet problem.
With the quick workaround, I can continue with my project at least.

@a3linux Make a PR for now.

Hello everyone! Fix is available in dev and master branches
It was connected with django new limitations to Template.render context argument (https://docs.djangoproject.com/en/1.11/releases/1.11/#django-template-render-prohibits-non-dict-context)

Greate & Thanks.
Will test it later today.

@f1nality I installed django-jet@master and got another template error about jet_previous_object_url.
Then I changed dashboard/dashboard.py line you did. It is working for me then.
I am not sure if the other changes in your merge caused the other problem.

I am still getting the same error.

If you don't use the JET dashboard, I found that removing the "jet.dashboard" app from the DJANGO_APPS list in the Django settings file can help avoid this issue.

@ajosephau it's good

Released in 1.0.6

Was this page helpful?
0 / 5 - 0 ratings

Related issues

imdario picture imdario  Â·  5Comments

PaoloC68 picture PaoloC68  Â·  7Comments

erayerdin picture erayerdin  Â·  5Comments

jangeador picture jangeador  Â·  5Comments

a1Gupta picture a1Gupta  Â·  7Comments