【问题标题】:dictionary update sequence element #0 has length 1; 2 is required when loading page字典更新序列元素#0的长度为1;加载页面时需要2
【发布时间】:2018-11-07 03:48:13
【问题描述】:

我看到了多个相同的主题,但没有一个能解决我的问题。 我刚刚创建了一个 django 项目,构建了一个名为 News 的应用程序。 当我尝试加载页面时出现此错误:

字典更新序列元素#0的长度为1; 2 是必需的

这里是第一个urls

from django.contrib import admin
from django.urls import path
from django.conf.urls import url,include

urlpatterns = [
    path('admin/', admin.site.urls),
    url(r'',include('News.urls'))
]

这里是News 网址:

from django.conf.urls import url
from . import views

urlpatterns = [
    url(r'', views.LoadHome.as_view(), 'home_page')
]

最后是我的观点:

class LoadHome(generic.TemplateView):
    template_name = 'index.html'

环境:

请求方法:GET 请求地址:http://127.0.0.1:8000/

Django 版本:2.0.5 Python 版本:3.6.5 已安装的应用程序: ['django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'MyUser.apps.MyuserConfig', 'News.apps.NewsConfig'] 已安装 中间件:['django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware']

追溯:

文件 “A:\Python\techProject\venv\lib\site-packages\django\core\handlers\exception.py” 在内部 35. response = get_response(request)

文件 “A:\Python\techProject\venv\lib\site-packages\django\core\handlers\base.py” 在 _get_response 113. resolver_match = resolver.resolve(request.path_info)

文件 “A:\Python\techProject\venv\lib\site-packages\django\urls\resolvers.py” 下定决心 496. sub_match = pattern.resolve(new_path)

文件 “A:\Python\techProject\venv\lib\site-packages\django\urls\resolvers.py” 下定决心 496. sub_match = pattern.resolve(new_path)

文件 “A:\Python\techProject\venv\lib\site-packages\django\urls\resolvers.py” 下定决心 345. kwargs.update(self.default_args)

异常类型:ValueError at / 异常值:字典更新 序列元素 #0 的长度为 1; 2 是必需的

有什么问题?

我认为原因是我在 settings.py 中的 INSTALLED_APPS 但我找不到任何问题。

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'MyUser.apps.MyuserConfig',
    'News.apps.NewsConfig'
]

【问题讨论】:

  • 你能发布完整的回溯吗?现在有点猜测。
  • @WillemVanOnsem 添加了回溯
  • @Mehdibmp 尝试在 url 中添加一些内容,与 '' 不同的路径或使用 '$'!
  • @Micolho 我将其更改为 /news/... 但仍然出现相同的错误
  • @Mehdibmp 你把它改成r'^news/$'了吗?

标签: python django


【解决方案1】:
urlpatterns = [
    url(r'', views.LoadHome.as_view, 'home_page')
]

你应该调用as_view方法:

urlpatterns = [
    url(r'', views.LoadHome.as_view(), 'home_page')
                                #  ^^
]

查看 Django 的class-based-views docs

【讨论】:

    【解决方案2】:

    在你的 urls.py 中你得到了错误:

    你的 urls.py:

    urlpatterns=[
    url(r'', views.LoadHome.as_view(), 'home_page')
    ]
    

    正确的是:

    urlpatterns=[
    url(r'', views.LoadHome.as_view(), name='home_page')
    ]
    

    【讨论】:

    • 赋值运算符周围不应有空格。
    猜你喜欢
    • 2018-03-20
    • 2020-12-14
    • 1970-01-01
    • 2015-08-30
    • 2015-02-22
    • 2013-07-10
    • 2021-04-01
    • 1970-01-01
    相关资源
    最近更新 更多