【问题标题】:Django tutorial, Getting: TypeError at /admin/ argument to reversed() must be a sequenceDjango 教程,Getting: TypeError at /admin/ argument to reversed() must be a sequence
【发布时间】:2015-11-08 00:05:32
【问题描述】:

我正在阅读 1.8 版的 django 教程,但我遇到了一个错误,我被卡住了,似乎无法弄清楚。我以为我几乎是按照教程学习到 T 的。

我设置了以下树:

. ├── dj_project │   ├── __init__.py │   ├── __init__.pyc │   ├── settings.py │   ├── settings.pyc │   ├── urls.py │   ├── urls.pyc │   ├── wsgi.py │   └── wsgi.pyc ├── manage.py └── polls ├── admin.py ├── admin.pyc ├── __init__.py ├── __init__.pyc ├── migrations │   ├── 0001_initial.py │   ├── 0001_initial.pyc │   ├── __init__.py │   └── __init__.pyc ├── models.py ├── models.pyc ├── tests.py ├── urls.py ├── urls.pyc ├── views.py └── views.pyc

并且拥有,就像在 polls/urls.py 的教程中一样:

from django.conf.urls import url

from . import views

urlpatterns = {
    url(r'^$', views.index, name='index'),
}

对于我的 dj_project/urls.py

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

urlpatterns = [

    url(r'^polls/', include('polls.urls')), 
    url(r'^admin/', include(admin.site.urls)),

]

polls/views.py 我有:

from django.shortcuts import render
from django.http import HttpResponse

def index(request):
    return HttpResponse("is there something here?")

所以当我转到<mysite>/polls 时,我看到“这里有什么东西”,但如果我转到<mysite>/admin,我得到错误:TypeError at /admin/ argument to reversed() must be a sequence。如果我从dj_project/urls.py 的 urlpatterns 中删除民意调查,管理员就可以了。

可能是什么问题?我好像搞不懂。

【问题讨论】:

  • 你想在任何地方使用reverse吗?

标签: python django-1.8


【解决方案1】:

polls/urls.py 文件中, 您将 urlpatterns 声明为 dict,它必须是一个列表。

改变

urlpatterns = {
    url(r'^$', views.index, name='index'),
}

到:

urlpatterns = [
    url(r'^$', views.index, name='index'),
]

【讨论】:

  • 可以成套吗?或者您可以声明一个名为 urlpatterns 的集合,然后将其更改为列表?
  • 我不确定您是否真的想将urlpatterns 转换为set 或者只是误解了我的回答中的它必须设置为列表 部分。你能说得更具体点吗?
  • 比如,如果我想为数据库中的每个对象都有一个 url,我可以将它转换为一个集合,删除可能的重复项,然后返回一个列表吗?跨度>
  • 您可以将urlpatterns 转换为set 以删除重复项并改回list。但我认为这样做没有任何意义,因为 urlpatterns 通常是手动编写的。为什么要为数据库中的每一行/对象创建 url。为什么不使用简单的正则表达式?
  • 有趣的事实:如果您定义一个 dict(这是错误的)并使用 format_suffix_patterns() 处理它就可以了 - 该函数似乎并不介意并正确转换它。我去为我的新应用复制了一些带有 dict 和 function 的代码,然后删除了 format_suffix_patterns,整个事情变得繁荣起来。
猜你喜欢
  • 2018-01-18
  • 2022-12-26
  • 2022-07-27
  • 2021-08-13
  • 2017-03-09
  • 1970-01-01
  • 2016-11-13
  • 1970-01-01
  • 2021-11-22
相关资源
最近更新 更多