gpt4 book ai didi

python - Django 休息框架

转载 作者:太空宇宙 更新时间:2023-11-03 13:20:14 24 4
gpt4 key购买 nike

我正在编写一个基于 Django 休息框架的休息 API 应用程序。我想以 JSON 形式返回我的模型数据

我的模型是:

from os import path
from django.db import models
from django.contrib import admin
from django.core.files.storage import FileSystemStorage

#------------------------------------------------------------------------------

projectDirPath = path.dirname(path.dirname(__file__))
storeImageDir = FileSystemStorage(location=projectDirPath + '/couponRestApiApp/stores')


class tags(models.Model):
""" This is the tag model """
tag = models.CharField(max_length=15) # Tag name
tagDescription = models.TextField() # Tag Description
tagSlug = models.CharField(max_length=400) # Extra info can be added to the existing tag using this field
createdAt = models.DateTimeField(auto_now_add=True) # Time at which tag is created
updatedAt = models.DateTimeField(auto_now=True) # Time at which tag is updated

def __unicode__(self):
"""Method to display string correctly"""
return unicode(self.tag)
class Meta:
"""Meta class to control display Behavior of the Model name """
verbose_name_plural = "Tags"


class stores(models.Model):
""" This is the store model """
storeName = models.CharField(max_length=15) # Store Name
storeDescription = models.TextField() # Store Description
storeURL = models.URLField() # Store URL
storePopularityNumber = models.IntegerField(max_length=1) # Store Popularity Number
storeImage = models.ImageField(upload_to="images") # Store Image
storeSlug = models.CharField(max_length=400) # This is the text you see in the URL
createdAt = models.DateTimeField(auto_now_add=True) # Time at which store is created
updatedAt = models.DateTimeField(auto_now=True) # Time at which store is updated
storeTags = models.ManyToManyField(tags) # All the tags associated with the store

def __unicode__(self):
"""Method to display string correctly"""
return unicode(self.storeName)
def StoreTags(self):
return '\n'.join([s.tag for s in self.storeTags.all()])
def StoreImage(self):
return '<img src="/media/couponRestApiApp/stores/%s" height="150"/>' % (self.storeImage)
StoreImage.allow_tags = True
class Meta:
"""Meta class to control display Behavior of the Model name """
verbose_name_plural = "Stores"


class coupons(models.Model):
""" This is the coupon model """
couponValue = models.CharField(max_length=4) # Coupon value in RS.
couponDescription = models.TextField() # Coupon Description
couponURL = models.URLField() # Coupon click URL
couponStore = models.ForeignKey(stores) # Key of coupon to store
tagName = models.ForeignKey(tags,on_delete=models.PROTECT) # Tag names associated to coupon
success = models.TextField() # Count of the number of times people have made it work
failures = models.TextField() # Count of the number of times this has failed
lastTested = models.DateTimeField(auto_now=True) # When was the coupon last tested
createdAt = models.DateTimeField(auto_now_add=True)
updatedAt = models.DateTimeField(auto_now=True)
class Meta:
"""Meta class to control display Behavior of the Model name """
verbose_name_plural = "Coupons"


class app(models.Model):
""" This is the application model which is using the API """
appName = models.CharField(max_length=20) # Application name
appDomain = models.CharField(max_length=20) # Application description
appKey = models.TextField() # Application Key
createdAt = models.DateTimeField(auto_now_add=True) # Time at which Application is added is created
updatedAt = models.DateTimeField(auto_now=True) # Time at which Application details are updated
class Meta:
"""Meta class to control display Behavior of the Model name """
verbose_name_plural = "Apps"



class subscriptions(models.Model):
""" These are the emails that are subscribing """
app = models.CharField(max_length=20) # The application where the email came from
store = models.CharField(max_length=20) # The optional store on which the email wants an update
tag = models.CharField(max_length=20) # The optional tag on which the email wants an update
emailID = models.EmailField() # EmailID of the registered user
active = models.BooleanField(default=True) # They may have unsubscribed
createdAt = models.DateTimeField(auto_now_add=True) # Time at user subscribed to the alerts
updatedAt = models.DateTimeField(auto_now=True) # Time at which user updated its subscription
class Meta:
"""Meta class to control display Behavior of the Model name """
verbose_name_plural = "Subscriptions"


class tagsAdmin(admin.ModelAdmin):
list_display = ('tag', 'tagDescription', 'tagSlug')


class storesAdmin(admin.ModelAdmin):
list_display = ('storeName','storeDescription','storeURL',
'storePopularityNumber','StoreImage',
'storeSlug','createdAt','createdAt','StoreTags'
)

class couponsAdmin(admin.ModelAdmin):
list_display = ('couponValue','couponDescription','couponValue',
'couponURL', 'couponStore','tagName','success',
'failures','createdAt','updatedAt'
)

class appsAdmin(admin.ModelAdmin):
list_display = ('appName','appDomain','appKey',
'createdAt','updatedAt'
)


class subcriptionsAdmin(admin.ModelAdmin):
list_display = ('app','store','tag','emailID',
'active','createdAt','updatedAt'
)

admin.site.register(tags,tagsAdmin)
admin.site.register(stores,storesAdmin)
admin.site.register(coupons,couponsAdmin)
admin.site.register(app,appsAdmin)
admin.site.register(subscriptions,subcriptionsAdmin)

#------------------------------------------------------------------------------

我在 views.py 中写了一个类:

from rest_framework import status
from rest_framework.views import View
from rest_framework.response import Response
from couponRestApiApp.models import app,coupons,stores,subscriptions,tags

-------------------------------------------- --------------------------------

class getAllStores(View):
"""
Provides access to all orders within the system.
"""


def get(self, request):
"""
Return a list of all orders.
"""
storeResponse = [i.storeName for i in stores.objects.all()]
print storeResponse
return (storeResponse)

我的 URL.py 是:

from django.contrib import admin
from couponRestApiApp.views import getAllStores
from django.conf.urls import patterns, include, url
#------------------------------------------------------------------------------

admin.autodiscover()

urlpatterns = patterns('',

url(r'^admin/', include(admin.site.urls)),
url(r'^media/(?P<path>.*)$', 'django.views.static.serve',
{'document_root': "/home/vaibhav/TRAC/coupon-rest-api/couponRestApi/", 'show_indexes': False}),
url(r'^stores/$',getAllStores.as_view(), name='getAllStores'),
)

但是如果我发出请求(http://localhost:8000/stores/) 会抛出以下错误:'list' object has no attribute 'status_code'

请告诉我如何使用 rest-framework 将模型数据序列化为 JSON 对象....

最佳答案

class getAllStores(generics.ListAPIView,APIView):
"""
Provides access to all orders within the system.
"""

model = stores # Model name
serializer_class = getAllStoresDetailSerializer # Call serializer

def get_queryset(self):
return stores.objects.filter()

序列化器:

class getAllStoresDetailSerializer(serializers.ModelSerializer):

storeTags = serializers.Field(source='StoreTags')
storeImage = serializers.Field(source='storeImage')

class Meta:
model = stores
fields = ('storeName','storeDescription',
'storeURL','storePopularityNumber','storeImage','storeTags',
'storeSlug','createdAt','updatedAt','StoreCoupons'
)

我认为您必须修改 storeImage 方法以提供服务器上图像的路径......或者为此定义新方法......

关于python - Django 休息框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16035370/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com