Are there any plans to support 1.11? I know what the problem is but only a limited idea of how to sort it.
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
Most helpful comment
Released in 1.0.6