【问题标题】:django_cms forced language in url problem : TypeError at / string indices must be integersdjango_cms url 中的强制语言问题:TypeError at / string indices must be integers
【发布时间】:2019-06-05 11:00:51
【问题描述】:

我正在尝试使用 divio - django-cms, 但是每当我尝试连接到本地服务器时,都会因为我的本地语言而出错。

我试图删除 settings.py 的语言代码 sn-ps 但徒劳无功,因为它引发了另一个类似的错误

TypeError at /
string indices must be integers

**Request Method:   GET
Request URL:    http://54.180.150.144:52761/
Django Version: 1.11.21
Exception Type: TypeError
Exception Value:    
string indices must be integers
Exception Location: /workspace/heydj/venv/lib/python3.6/site-packages/cms/utils/conf.py in _ensure_languages_settings, line 205
Python Executable:  /workspace/heydj/venv/bin/python3
Python Version: 3.6.5
Python Path:    
['/workspace/djcms_r',
 '/workspace/heydj/venv/lib/python36.zip',
 '/workspace/heydj/venv/lib/python3.6',
 '/workspace/heydj/venv/lib/python3.6/lib-dynload',
 '/usr/local/lib/python3.6',
 '/workspace/heydj/venv/lib/python3.6/site-packages']
Server time:    WED, 5 July 2019 10:47:35 +0000**

在 settings.py 中是这样的:

"""        {
            'code': 'RU',
            'name': gettext('RU'),
            'redirect_on_fallback': True,
            'public': True,
            'hide_untranslated': False,
        },"""

当我更改代码时,它会引发另一个错误,例如找不到页面 使用 djcms_r.urls 中定义的 URLconf,Django 按以下顺序尝试了这些 URL 模式:

^media/(?P<path>.*)$
^static\/(?P<path>.*)$
^sitemap\.xml$
^ko/ ^admin/
^ko/ ^ ^cms_login/$ [name='cms_login']
^ko/ ^ ^cms_wizard/
^ko/ ^ ^(?P<slug>[0-9A-Za-z-_.//]+)/$ [name='pages-details-by-slug']
^ko/ ^ ^$ [name='pages-root']

当前路径 /ko/ 与其中任何一个都不匹配。

我尝试使用“export LC_ALL=C”更改 linux 语言

但它也不起作用。

如何解决此错误? 谢谢

LANGUAGES = (
    [('en', 'en-us')]
   # [('en-us','en')]
    ## Customize this
    #('RU', gettext('RU')),
)


CMS_LANGUAGES = {
    ## Customize this
    1: [
          {
            'code': 'en',
            'name': gettext('English'),
            'fallbacks': ['de', 'fr'],
            'public': True,
            'hide_untranslated': True,
            'redirect_on_fallback':False,
        },
        
        
   
"""        {
            'code': 'ko',
            'name': gettext('ko'),
            'redirect_on_fallback': True,
            'public': True,
            'hide_untranslated': False,
        },"""
    ],
    'default': {
        'redirect_on_fallback': True,
        'public': True,
        'hide_untranslated': False,
    },
}

LANGUAGE_CODE = 'en'

【问题讨论】:

  • 等等,你把它定义为一个字符串?你不应该把它定义为{'code': 'ko', ...} 所以没有字符串,作为字典?
  • @WillemVanOnsem 您好,您指的是字典值吗? { 'code': 'en', 'name': gettext('English'), 'fallbacks': ['de', 'fr'], 'public': True, 'hide_untranslated': True, 'redirect_on_fallback':错误,},这就是我为当地语言所做的和所做的"""
  • @WillemVanOnsem 我会针对语言相关的代码更新一下我的文章
  • @WillemVanOnsem 哦,我不明白你所说的字符串是什么意思——只是我用 """ """ 来注释掉这个块

标签: python django django-cms


【解决方案1】:

也许你注释掉了不应该的“自定义这个”部分。

为了给你另一个解决方案,你不妨考虑改变你的 linux 本地配置。

【讨论】:

    猜你喜欢
    • 2013-09-26
    • 1970-01-01
    • 2012-03-03
    • 1970-01-01
    • 2017-10-31
    • 1970-01-01
    • 2020-10-18
    • 2020-01-20
    • 2020-09-04
    相关资源
    最近更新 更多