Django login function - TypeError: context must be a dict, not a context
Context must be a dict expression, not a Context
Hey. I am relatively new to Python and Django and am working on a project. I need to figure out what I have with the login view. No matter what I try, I get this type error.
Here is the html template and login view:
login.html template
{% extends "base.html" %}
{% load bootstrap_tags %}
{% block content %}
<form role="form" method="post" action="{% url 'login' %}">
<legend>Login</legend>
{% csrf_token %}
{{ form| as_bootstrap }}
<div class="form-group">
<button type="submit" class="btn btn-primary">Login</button>
</div>
</form>
{% endblock %}
Account login function /views.py
def login(request):
if request.method == 'POST':
form = UserLoginForm(request.POST)
if form.is_valid():
user = auth.authenticate(email=request.POST.get('email'),
password=request.POST.get('password'))
if user is not None:
auth.login(request, user)
messages.error(request, "You have successfully logged in")
return redirect(reverse('index'))
else:
form.add_error(None, "Your email or password was not recognised")
else:
form = UserLoginForm()
args = {'form': form}
args.update(csrf(request))
return render(request, 'login.html', args)
When I try to navigate to the login pattern from the index on the local server, it returns typeError: context should be a dict, not a Context. Someone please shed some light on this error until they could find a solution.
Updated: full trace
Traceback:
File "/Users/Andrew/Documents/Code/code-institute-projects/stream-three/env/lib/python2.7/site-packages/django/core/handlers/exception.py" in inner
41. response = get_response(request)
File "/Users/Andrew/Documents/Code/code-institute-projects/stream-three/env/lib/python2.7/site-packages/django/core/handlers/base.py" in _get_response
187. response = self.process_exception_by_middleware(e, request)
File "/Users/Andrew/Documents/Code/code-institute-projects/stream-three/env/lib/python2.7/site-packages/django/core/handlers/base.py" in _get_response
185. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/Users/Andrew/Documents/Code/code-institute-projects/stream-three/movie_app/MovieApp_prj/accounts/views.py" in login
117. return render(request, 'login.html', args)
File "/Users/Andrew/Documents/Code/code-institute-projects/stream-three/env/lib/python2.7/site-packages/django/shortcuts.py" in render
30. content = loader.render_to_string(template_name, context, request, using=using)
File "/Users/Andrew/Documents/Code/code-institute-projects/stream-three/env/lib/python2.7/site-packages/django/template/loader.py" in render_to_string
68. return template.render(context, request)
File "/Users/Andrew/Documents/Code/code-institute-projects/stream-three/env/lib/python2.7/site-packages/django/template/backends/django.py" in render
66. return self.template.render(context)
File "/Users/Andrew/Documents/Code/code-institute-projects/stream-three/env/lib/python2.7/site-packages/django/template/base.py" in render
207. return self._render(context)
File "/Users/Andrew/Documents/Code/code-institute-projects/stream-three/env/lib/python2.7/site-packages/django/template/base.py" in _render
199. return self.nodelist.render(context)
File "/Users/Andrew/Documents/Code/code-institute-projects/stream-three/env/lib/python2.7/site-packages/django/template/base.py" in render
990. bit = node.render_annotated(context)
File "/Users/Andrew/Documents/Code/code-institute-projects/stream-three/env/lib/python2.7/site-packages/django/template/base.py" in render_annotated
957. return self.render(context)
File "/Users/Andrew/Documents/Code/code-institute-projects/stream-three/env/lib/python2.7/site-packages/django/template/loader_tags.py" in render
177. return compiled_parent._render(context)
File "/Users/Andrew/Documents/Code/code-institute-projects/stream-three/env/lib/python2.7/site-packages/django/template/base.py" in _render
199. return self.nodelist.render(context)
File "/Users/Andrew/Documents/Code/code-institute-projects/stream-three/env/lib/python2.7/site-packages/django/template/base.py" in render
990. bit = node.render_annotated(context)
File "/Users/Andrew/Documents/Code/code-institute-projects/stream-three/env/lib/python2.7/site-packages/django/template/base.py" in render_annotated
957. return self.render(context)
File "/Users/Andrew/Documents/Code/code-institute-projects/stream-three/env/lib/python2.7/site-packages/django/template/loader_tags.py" in render
72. result = block.nodelist.render(context)
File "/Users/Andrew/Documents/Code/code-institute-projects/stream-three/env/lib/python2.7/site-packages/django/template/base.py" in render
990. bit = node.render_annotated(context)
File "/Users/Andrew/Documents/Code/code-institute-projects/stream-three/env/lib/python2.7/site-packages/django/template/base.py" in render_annotated
957. return self.render(context)
File "/Users/Andrew/Documents/Code/code-institute-projects/stream-three/env/lib/python2.7/site-packages/django/template/base.py" in render
1040. output = self.filter_expression.resolve(context)
File "/Users/Andrew/Documents/Code/code-institute-projects/stream-three/env/lib/python2.7/site-packages/django/template/base.py" in resolve
736. new_obj = func(obj, *arg_vals)
File "/Users/Andrew/Documents/Code/code-institute-projects/stream-three/env/lib/python2.7/site-packages/django_forms_bootstrap/templatetags/bootstrap_tags.py" in as_bootstrap
28. return template.render(c)
File "/Users/Andrew/Documents/Code/code-institute-projects/stream-three/env/lib/python2.7/site-packages/django/template/backends/django.py" in render
64. context = make_context(context, request, autoescape=self.backend.engine.autoescape)
File "/Users/Andrew/Documents/Code/code-institute-projects/stream-three/env/lib/python2.7/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 /login/
Exception Value: context must be a dict rather than Context.
+3
source to share
No one has answered this question yet
Check out similar questions: