J'ai ce point de vue basé sur la classe:Appeler une vue basée sur la classe d'une application d'une autre application même projet
class Browse(APIView):
'''
Browse associations
'''
permission_classes = [TokenHasReadWriteScope]
def get(self,request,format=None):
reply={}
status=200
try:
filter_options={}
name=request.query_params.get('name','').strip()
if name:
filter_options['name__icontains']=name
associations=Association.objects.filter(**filter_options)values('id','name')
page=request.query_params.get('page',1)
paginator=Paginator(associations,20)
data=paginator.page(page)
except PageNotAnInteger:
data=paginator.page(1)
except EmptyPage:
data=paginator.page(paginator.num_pages)
except:
status=400
reply['detail']=(_('ErrorProcessingRequest'))
if status==200:
reply['associations']=list(data)
reply['total_num_of_pages']=paginator.num_pages
reply['total_rows_found']=paginator.count
return JsonResponse(reply,status=status)
Maintenant, j'ai une autre application qui est orientée vers les utilisateurs internes (différent connexion et tous), mais Je veux lister les associations encore. Le code ci-dessus est court et cela ne me dérange pas de le coller là mais je me demande simplement si je peux éviter DRY en appelant le Browse from views.py d'une autre application.
Actuellement, je TRIE de cette application 2:
from app1.views import Browse
b=Browse()
#but I cant serialize it as it returns <app1.views.Browse object at 0x0000000006CE0E80> is not JSON serializable