Vo vývoji Django som úplne nový. Mám zdroj a model:
Model
class Player(models.Model):
pseudo = models.CharField(max_length=32, unique=True)
ModelResource
class PlayerResource(ModelResource):
class Meta:
queryset = Player.objects.all()
resource_name = "player"
authentication = BasicAuthentication()
authorization = Authorization()
serializer = Serializer(formats=["xml"])
filtering = {
"pseudo": ALL,
}
A žiadam všetkých hráčov/ api / v1 / player /? format = xml, zdá sa však, že hlavička odpovede: Content-Length chýba, čo spôsobuje určité problémy v mojej aplikácii. Ako ho môžem pridať do hlavičky odpovede?
Mnohokrat dakujem.
odpovede:
3 pre odpoveď č. 1Nedostatok obsahu - dĺžka bola spôsobená nedostatkom Middleware.
Pre viac informácií : Pozri sa sem : Ako získam dĺžku obsahu objektu odozvy Django?
Dĺžku obsahu však môžete pridať manuálne takto:
def create_response(self, request, data, response_class=HttpResponse, **response_kwargs):
desired_format = self.determine_format(request)
serialized = self.serialize(request, data, desired_format)
response = response_class(content=serialized, content_type=build_content_type(desired_format), **response_kwargs)
response["Content-Length"] = len(response.content)
return response
2 pre odpoveď č. 2
Záhlavie Content-Length môžete pridať prepísaním metódy create_reponse do svojho vlastného zdroja, napríklad:
class MyResource(ModelResource):
class Meta:
queryset=MyModel.objects.all()
def create_response(self, ...)
# Here goes regular code that do the method from tastypie
return response_class(content=serialized, content_type=build_content_type(desired_format), Content-Length=value, **response_kwargs)