Django CMS菜单上的语言:类型'type'的对象没有len()

时间:2015-09-23 14:35:14

标签: python django django-cms

我最近在我的项目中加入了英文和简体中文。但是,当我更改为我的(已发布的)中文页面时,它会在使用show_menu时抛出TypeError。葡萄牙语和英语也不会发生同样的情况

TypeError at /zh-cn/
object of type 'type' has no len()
Request Method: GET
Request URL:    http://localhost:8000/zh-cn/
Django Version: 1.5.8
Exception Type: TypeError
Exception Value:    
object of type 'type' has no len()
Exception Location: /home/marcos/django/project/env/local/lib/python2.7/site-packages/menus/menu_pool.py in _mark_selected, line 171
Python Executable:  /home/marcos/django/project/env/bin/python

我做错了什么?

版本

Django 1.5.8

Django CMS 2.4.3

settings.py

LANGUAGES = (('pt', u'Português'), ('en', u'English'), ('zh-cn', u'中文'),)
CMS_LANGUAGES = LANGUAGES

base.html文件

{% load sekizai_tags i18n cms_tags menu_tags %}
(...)
<div class="nav top-nav">
    <ul class="inner-nav">
    {% show_menu 0 %}
    </ul>
</div>

完整追溯

Traceback:
File "/home/marcos/django/project/env/local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
  113.                         response = callback(request, *callback_args, **callback_kwargs)
File "/home/marcos/django/project/env/local/lib/python2.7/site-packages/cms/views.py" in details
  151.     return render_to_response(template_name, context_instance=context)
File "/home/marcos/django/project/env/local/lib/python2.7/site-packages/django/shortcuts/__init__.py" in render_to_response
  29.     return HttpResponse(loader.render_to_string(*args, **kwargs), **httpresponse_kwargs)
File "/home/marcos/django/project/env/local/lib/python2.7/site-packages/django/template/loader.py" in render_to_string
  177.         return t.render(context_instance)
File "/home/marcos/django/project/env/local/lib/python2.7/site-packages/django/template/base.py" in render
  140.             return self._render(context)
File "/home/marcos/django/project/env/local/lib/python2.7/site-packages/django/test/utils.py" in instrumented_test_render
  66.     return self.nodelist.render(context)
File "/home/marcos/django/project/env/local/lib/python2.7/site-packages/django/template/base.py" in render
  830.                 bit = self.render_node(node, context)
File "/home/marcos/django/project/env/local/lib/python2.7/site-packages/django/template/debug.py" in render_node
  74.             return node.render(context)
File "/home/marcos/django/project/env/local/lib/python2.7/site-packages/django/template/loader_tags.py" in render
  124.         return compiled_parent._render(context)
File "/home/marcos/django/project/env/local/lib/python2.7/site-packages/django/test/utils.py" in instrumented_test_render
  66.     return self.nodelist.render(context)
File "/home/marcos/django/project/env/local/lib/python2.7/site-packages/django/template/base.py" in render
  830.                 bit = self.render_node(node, context)
File "/home/marcos/django/project/env/local/lib/python2.7/site-packages/django/template/debug.py" in render_node
  74.             return node.render(context)
File "/home/marcos/django/project/env/local/lib/python2.7/site-packages/classytags/core.py" in render
  106.         return self.render_tag(context, **kwargs)
File "/home/marcos/django/project/env/local/lib/python2.7/site-packages/sekizai/templatetags/sekizai_tags.py" in render_tag
  76.         rendered_contents = nodelist.render(context)
File "/home/marcos/django/project/env/local/lib/python2.7/site-packages/django/template/base.py" in render
  830.                 bit = self.render_node(node, context)
File "/home/marcos/django/project/env/local/lib/python2.7/site-packages/django/template/debug.py" in render_node
  74.             return node.render(context)
File "/home/marcos/django/project/env/local/lib/python2.7/site-packages/django/template/defaulttags.py" in render
  369.         return strip_spaces_between_tags(self.nodelist.render(context).strip())
File "/home/marcos/django/project/env/local/lib/python2.7/site-packages/django/template/base.py" in render
  830.                 bit = self.render_node(node, context)
File "/home/marcos/django/project/env/local/lib/python2.7/site-packages/django/template/debug.py" in render_node
  74.             return node.render(context)
File "/home/marcos/django/project/env/local/lib/python2.7/site-packages/classytags/core.py" in render
  106.         return self.render_tag(context, **kwargs)
File "/home/marcos/django/project/env/local/lib/python2.7/site-packages/classytags/helpers.py" in render_tag
  78.         data = self.get_context(context, **kwargs)
File "/home/marcos/django/project/env/local/lib/python2.7/site-packages/menus/templatetags/menu_tags.py" in get_context
  133.             nodes = menu_pool.get_nodes(request, namespace, root_id)
File "/home/marcos/django/project/env/local/lib/python2.7/site-packages/menus/menu_pool.py" in get_nodes
  161.         nodes = self.apply_modifiers(nodes, request, namespace, root_id, post_cut=False, breadcrumb=breadcrumb)
File "/home/marcos/django/project/env/local/lib/python2.7/site-packages/menus/menu_pool.py" in apply_modifiers
  149.             nodes = self._mark_selected(request, nodes)
File "/home/marcos/django/project/env/local/lib/python2.7/site-packages/menus/menu_pool.py" in _mark_selected
  171.             if node.get_absolute_url() == request.path[:len(node.get_absolute_url())]:

Exception Type: TypeError at /zh-cn/
Exception Value: object of type 'type' has no len()

1 个答案:

答案 0 :(得分:0)

今天在回顾我在项目的github上创建错误的步骤时,我找到了问题的根源。

当项目只有一种语言时,会在多个页面中挂起一些 apphooks 。我去了那些页面,保存并发布了草稿版本,它确实有效!

简而言之:

  1. 识别出已经被禁止的页面
  2. 点击&#34;保存并继续编辑&#34;,然后&#34;发布草稿&#34;每个
  3. 重新启动服务器
  4. 我希望这有助于某人。

    干杯并感谢您的帮助!