我想使用Django REST框架来创建一个API来调用不同的方法。我阅读[django-rest-framework] [1]的指南来使用这个框架,但我仍然有一些问题。
我没有模型我从外部数据库获取数据。我想先尝试一些简单的事情:
为此,我创建了新的应用程序,我包含在设置文件和我的view.py中,我将其包含在第一个案例中
def connect_database():
db = MySQLdb.connect(host='...', port=, user='...', passwd='...', db='...')
try:
cursor = db.cursor()
cursor.execute('SELECT * FROM proj_cpus')
columns = [column[0] for column in cursor.description]
# all_rows = cursor.fetchall()
all_rows = []
for row in iter_row(cursor):
all_rows.append(dict(zip(columns, row)))
finally:
db.close()
return all_rows
def iter_row(cursor, size= 1000):
while True:
results = cursor.fetchmany(size)
if not results:
break
for item_result in results:
yield item_result
class cpuProjectsViewSet(viewsets.ViewSet):
serializer_class = serializers.cpuProjectsSerializer
def list(self, request):
all_rows = connect_database()
name_project = []
for item_row in all_rows:
name_project.append(item_row['project'])
name_project = list(sorted(set(name_project)))
serializer = serializers.cpuProjectsSerializer(instance=name_project, many=False)
return Response(serializer.data)
我的序列化程序文件我有这个
class cpuProjectsSerializer(serializers.Serializer):
project = serializers.CharField(max_length=256)
def update(self, instance, validated_data):
instance.project = validated_data.get('project', instance.project)
return instance
现在我执行此http://127.0.0.1:8000/hpcAPI
我收到此错误
Got AttributeError when attempting to get a value for field `project` on serializer `cpuProjectsSerializer`.
The serializer field might be named incorrectly and not match any attribute or key on the `list` instance.
Original exception text was: 'list' object has no attribute 'project'.
我在谷歌寻找并改变了这个
serializers.cpuProjectsSerializer(instance=name_project, many=False)
serializers.cpuProjectsListSerializer(instance=name_project, many=False)
但我得到了同样的错误!
对此有任何想法!
谢谢你的意见
答案 0 :(得分:0)
来自docs here。您不必拥有创建Serializer类的模型。您可以定义一些序列化器字段然后使用它们。您不应导入CPUProjectsViewSet并在下面
中定义它pointer-events:none;