düzgün şekilde nasıl kullanacağım? Bu nedenle, Aktörler ve Rol ve Viewsets ve HyperlinkedModelSerializer kullanarak varsayılan bir REST API'sine sahip modellerim var.Django REST Framework: HyperlinkedModelSerializer url alanını birim sınamalarında
Amacım: İlişkilendirilmiş bir Oyuncu ile Rol oluşturan bir birim testi.
Testim kodu şu anda:
def test_post_create_role_for_actor(self):
# default actor
actor = ActorFactory()
# inherits HyperlinkedModelSerializer
actor_serialized = ActorSerializer(actor)
postdata = {
'role': 'mydummyrole',
'actor': actor_serialized.data['url']
}
ret = self.client.post(self.url, json.dumps(postdata), content_type='application/json')
self.assertEqual(ret.status_code, 201)
self.assertTrue(Role.objects.filter(role='mydummyrole', actor_id=actor.id).exists())
Şimdi bu bana oluşturulan URL alanını almak için özellikle seri çok çirkin görünüyor.
DeprecationWarning: serileştirici bağlamında istek kullanımdan kaldırılmıştır içermeden
HyperlinkedIdentityField
kullanma Aslında, bir kullanımdan kaldırılması uyarısı alıyor. Diziselleştiriciyi başlatırkencontext={'request': request}
'u ekleyin.
Ancak, seri hale getirici tarafından oluşturulan "url" alanı herhangi bir istekle ilgili görünmüyor. Bu alanı getirmenin uygun yolu nedir? Burada bir kavram kaçırdığımı hissediyorum. Ya da iki.
TIA! Eğer url tanımlayıcı olarak kullanmak Sonra
actor = ActorFactory()
actor.save()
aktörün kimliği kullanarak url almak için Django reverse
yöntemini kullanın ya da her türlü alan:
URL'yi mutlak olarak dönüştürülebilmek için isteği iletmeniz gerekiyor. Bkz. Http://django-rest-framework.org/api-guide/reverse –