Skip to main content
 首页 » 编程设计

python之Django: TypeError at/categories/sequence item 0: expected str instance, Category 找到

2024年08月20日27txw1958

我正在尝试使用 Django 编写一本电子短语手册,以帮助人们学习语言。或者实际上是具有新功能的旧版本的新版本。无论如何,我在这里的前几米被严重困住了。

我已将一些对象添加到数据库并希望在“类别”URL 中显示它们。第一个网址 http://127.0.0.1:8000/工作得很好,给了我一个美妙的 Hello World 。但是,我需要将新应用程序连接到项目,当我尝试打开应用程序的 url 时 http://127.0.0.1:8000/categories/ ,浏览器给我这个:

TypeError at /categories/ 
sequence item 0: expected str instance, Category found 

我的控制台提示应用程序的 view.py,并在其中提示第 9 行 output = ', '.join(categories)。我找不到任何问题。这是整个 views.py:

from django.http import HttpResponse 
from django.shortcuts import render 
 
from .models import Category 
 
 
def category_list(request): 
    categories = Category.objects.all() 
    output = ', '.join(categories) 
    return HttpResponse(output) 

这是应用程序的 url.py:

from django.conf.urls import url 
 
from . import views 
 
urlpatterns = [ 
    url(r'^$', views.category_list), 
] 

这是主要的 url.py:

from django.conf.urls import url, include 
from django.contrib import admin 
 
from . import views 
 
urlpatterns = [ 
    url(r'^categories/', include('phrasebooktwo.urls')), 
    url(r'^admin/', admin.site.urls), 
    url(r'^$', views.hello_world), 
] 

这是项目树:

bigboy_phrasebook 
├── bigboy_phrasebook 
│   ├── __init__.py 
│   ├── __pycache__ 
│   │   ├── __init__.cpython-35.pyc 
│   │   ├── settings.cpython-35.pyc 
│   │   ├── urls.cpython-35.pyc 
│   │   ├── views.cpython-35.pyc 
│   │   └── wsgi.cpython-35.pyc 
│   ├── settings.py 
│   ├── urls.py 
│   ├── views.py 
│   └── wsgi.py 
├── db.sqlite3 
├── manage.py 
└── phrasebooktwo 
    ├── __init__.py 
    ├── __pycache__ 
    │   ├── __init__.cpython-35.pyc 
    │   ├── admin.cpython-35.pyc 
    │   ├── models.cpython-35.pyc 
    │   ├── urls.cpython-35.pyc 
    │   └── views.cpython-35.pyc 
    ├── admin.py 
    ├── apps.py 
    ├── migrations 
    │   ├── 0001_initial.py 
    │   ├── __init__.py 
    │   └── __pycache__ 
    │       ├── 0001_initial.cpython-35.pyc 
    │       └── __init__.cpython-35.pyc 
    ├── models.py 
    ├── tests.py 
    ├── urls.py 
    └── views.py 

如何让我的类别页面正常工作?预先感谢您的帮助。

请您参考如下方法:

在使用 join() 之前,您必须使用 str() 或 repr() 或任何其他返回类别对象字符串的方法。让我通过一个简单的例子来解释这一点:

class Category: 
    def __init__(self, name): 
        self.name = name 
 
 
items = [Category('jam')] 
out = ', '.join(items) 
print(out) 

如果你运行这段代码,你会得到“TypeError: sequence item 0: expected str instance, Category found”

因此,您必须按如下方式修改代码:

class Category: 
    def __init__(self, name): 
        self.name = name 
 
    def __str__(self): 
        return self.name 
 
 
items = [Category('jam').__str__()] 
out = ', '.join(items) 
print(out)