【问题标题】:TypeError at / 'str' object is not a mapping in django template/'str'对象的TypeError不是django模板中的映射
【发布时间】:2019-05-30 23:56:30
【问题描述】:

我正在尝试在标签内设置链接,当我按照代码中所示执行此过程时,它给了我错误:

TypeError at / 'str' object is not a mapping

它曾经工作正常,但后来决定不这样做

模板代码:

<a class="item" href="{% url 'home' %}">

网址代码:

urlpatterns = [
  path('admin/', include('admin_llda.urls') ),
  path('about/', views.about, name = 'about'),
  path('dashboard/',views.dashboard, name = 'dashboard'),
  path('',views.homepage, name = 'home')   
]

【问题讨论】:

  • 您的homepage 视图中似乎有错误。
  • 正如您之前所说的那样,您尝试访问的网址可能有问题。无论如何尝试更新您的模板:&lt;a class="item" href="{{ url }}"&gt;Home&lt;/a&gt;

标签: python django django-views


【解决方案1】:

检查您是否在urls 文件中正确命名了name kwarg。 这是一个关键字参数,而不是一个参数。所以你应该输入关键字和值。

例如,您当前安装的应用程序之一中的urlpatterns 列表urls.py 文件如下所示:

    urlpatterns = [
       path('', views.index, 'index'),
       path('like/', views.like, 'like')
    ]

你应该检查你是否错过了name kwarg。上面的代码应该改成:

    urlpatterns = [
        path('', views.index, name='index'),
        path('like/', views.like, name='like')
    ]

如果您想更快地找到它,您可以在 your_project/urls.py 文件中评论每个应用的 url 包含。当错误消失时,意味着您应该检查注释的应用程序urls.py文件。

【讨论】:

    【解决方案2】:

    检查您的所有 urls.py 文件中是否有 name 参数,对于您安装的每个 Django 应用程序。

    如果您在path 函数中为任何url 指定了名称参数,则应将其声明为path('', views.a, name='view.a'),而不是path('', views.a, 'view.a')

    注意后面的代码中没有name 参数。 如果您错过了 name 参数,您将收到 'TypeError at / 'str' object is not a mapping' 错误。

    【讨论】:

    • path("", ApiRoot.as_view(), name=ApiRoot.name) .Doesntowork
    • url(r'^$', ApiRoot.as_view(), name=ApiRoot.name),令人惊讶的是确实有效....
    【解决方案3】:

    请检查admin_llda.urls 中的错误。 您可能错过了在path() 调用之一中添加name=''

    例如:

    你可能写过

    path('',views.some_method, 'somename')
    

    而不是路径

    path('',views.some_method, name= 'somename')
    

    【讨论】:

      【解决方案4】:

      我刚遇到同样的问题,我找到了解决方案!检查您的 urls.py 以及您是否未能正确命名任何 url - 不一定

      【讨论】:

      【解决方案5】:

      尝试将命名空间添加到您的网址 例如,将以下内容添加到您的“my_app/urls.py”中 app_name='my_app'

      那么您的模板应该类似于:&lt;a class="item" href="{% url 'my_app:home' %}"&gt;

      最后一定要在“my_project/settings.py”中注册你的应用

      https://docs.djangoproject.com/en/3.0/topics/http/urls/#naming-url-patterns

      【讨论】:

        【解决方案6】:

        我遇到了同样的问题,请检查 path('',,name=" ") 中的 name 参数

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-06-04
          • 1970-01-01
          • 1970-01-01
          • 2010-11-26
          • 1970-01-01
          • 2021-12-19
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多