weixiang weixiang - 19 days ago 9
Python Question

Django/Python Exception Value: dictionary update sequence element #0 has length 4; 2 is required

article.urls.py :

from django.conf.urls import url

from . import views

urlpatterns = [

url(r'^tag/(?P<tag>\w+)/$',views.search_tag,name='search_tag'),


]

article.views.py:

from django.shortcuts import render
from django.http import HttpResponse
from article.models import Article
def search_tag(request,tag):
try:
post_list = Article.objects.all()
except Article.DoesNotExist:
raise Http404
return render(request,'tag.html',{'post_list',post_list})


tag.html:

{% extends "base.html" %}

{% load custom_markdown %}
{% block content %}
<div class="posts">
{% for post in post_list %}
<section class="post">
<header class="post-header">
<h2 class="post-title"><a href="{% url "detail" id=post.id %}">{{ post.title }}</a></h2>

<p class="post-meta">
Time: <a class="post-author" href="#">{{ post.date_time |date:"Y M d"}}</a> <a class="post-category post-category-js" href="{% url "search_tag" tag=post.category %}">{{ post.category|title }}</a>
</p>
</header>

<div class="post-description">
<p>
{{ post.content|custom_markdown }}
</p>
</div>
<a class="pure-button" href="{% url "detail" id=post.id %}">Read More >>> </a>
</section>
{% endfor %}
</div><!-- /.blog-post -->
{% endblock %}


Why i got error like this?

ValueError at /tag/Python/
dictionary update sequence element #0 has length 4; 2 is required
Request Method: GET
Request URL: http://localhost:9000/tag/Python/
Django Version: 1.10.3
Exception Type: ValueError
Exception Value:
dictionary update sequence element #0 has length 4; 2 is required
Exception Location: /usr/local/lib/python3.5/dist-packages/django/template/context.py in __init__, line 18
Python Executable: /usr/bin/python3
Python Version: 3.5.2
Python Path:
['/home/weixiang/workspace/WebPy/my_blog',
'/usr/lib/python35.zip',
'/usr/lib/python3.5',
'/usr/lib/python3.5/plat-x86_64-linux-gnu',
'/usr/lib/python3.5/lib-dynload',
'/home/weixiang/.local/lib/python3.5/site-packages',
'/usr/local/lib/python3.5/dist-packages',
'/usr/lib/python3/dist-packages']
Server time: Mon, 21 Nov 2016 07:50:07 +0000


In the url, 'Python' as the parameter should send to the search_tag(request,tag).

Answer

You are sending the request context dictionary in incorrect format.

Instead of

return render(request,'tag.html',{'post_list',post_list})

It should be

return render(request,'tag.html', {'post_list': post_list})