From 3f95ee9db8c602c3d94369ea2af2d6808968a5f6 Mon Sep 17 00:00:00 2001 From: Guamss Date: Sun, 14 Dec 2025 16:20:19 +0100 Subject: [PATCH] ajout d'un parser pour du multipart/form-data --- .idea/.gitignore | 8 +++ .idea/book-list-api.iml | 27 ++++++++ .idea/inspectionProfiles/Project_Default.xml | 6 ++ .../inspectionProfiles/profiles_settings.xml | 6 ++ .idea/misc.xml | 18 +++++ .idea/modules.xml | 8 +++ .idea/vcs.xml | 12 ++++ api/__pycache__/__init__.cpython-313.pyc | Bin 0 -> 150 bytes api/__pycache__/settings.cpython-313.pyc | Bin 0 -> 3500 bytes api/__pycache__/urls.cpython-313.pyc | Bin 0 -> 1968 bytes api/__pycache__/wsgi.cpython-313.pyc | Bin 0 -> 629 bytes books/__pycache__/__init__.cpython-313.pyc | Bin 0 -> 152 bytes books/__pycache__/admin.cpython-313.pyc | Bin 0 -> 421 bytes books/__pycache__/apps.cpython-313.pyc | Bin 0 -> 514 bytes books/__pycache__/models.cpython-313.pyc | Bin 0 -> 3430 bytes books/__pycache__/serializers.cpython-313.pyc | Bin 0 -> 766 bytes books/__pycache__/urls.cpython-313.pyc | Bin 0 -> 376 bytes books/__pycache__/views.cpython-313.pyc | Bin 0 -> 3894 bytes books/migrations/0001_initial.py | 63 ++++++++++++++++++ books/migrations/__init__.py | 0 .../__pycache__/0001_initial.cpython-313.pyc | Bin 0 -> 5244 bytes .../__pycache__/__init__.cpython-313.pyc | Bin 0 -> 163 bytes books/views.py | 2 + 23 files changed, 150 insertions(+) create mode 100644 .idea/.gitignore create mode 100644 .idea/book-list-api.iml create mode 100644 .idea/inspectionProfiles/Project_Default.xml create mode 100644 .idea/inspectionProfiles/profiles_settings.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml create mode 100644 api/__pycache__/__init__.cpython-313.pyc create mode 100644 api/__pycache__/settings.cpython-313.pyc create mode 100644 api/__pycache__/urls.cpython-313.pyc create mode 100644 api/__pycache__/wsgi.cpython-313.pyc create mode 100644 books/__pycache__/__init__.cpython-313.pyc create mode 100644 books/__pycache__/admin.cpython-313.pyc create mode 100644 books/__pycache__/apps.cpython-313.pyc create mode 100644 books/__pycache__/models.cpython-313.pyc create mode 100644 books/__pycache__/serializers.cpython-313.pyc create mode 100644 books/__pycache__/urls.cpython-313.pyc create mode 100644 books/__pycache__/views.cpython-313.pyc create mode 100644 books/migrations/0001_initial.py create mode 100644 books/migrations/__init__.py create mode 100644 books/migrations/__pycache__/0001_initial.cpython-313.pyc create mode 100644 books/migrations/__pycache__/__init__.cpython-313.pyc diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/book-list-api.iml b/.idea/book-list-api.iml new file mode 100644 index 0000000..13c7c03 --- /dev/null +++ b/.idea/book-list-api.iml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..ac21435 --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..105ce2d --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..d8cc06e --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,18 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..9f4b0e6 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..ce73e4d --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,12 @@ + + + + + + + + + + \ No newline at end of file diff --git a/api/__pycache__/__init__.cpython-313.pyc b/api/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a8afd649711ea7775fc11f2887a91b7f0533ccc6 GIT binary patch literal 150 zcmey&%ge<81Ric|nIQTxh=2h`DC08=kTI1Zok5e)ZzV$!6Oi{ABz4PFKO;XkRX@En zF}GOXCAB!aB)>pECACaHDL+43Hz%{WL^rV@Qy+xm<1_OzOXB183My}L*yQG?l;)(` W6|n+M0ohUvVtiy~WMnL22C@JUZX#s> literal 0 HcmV?d00001 diff --git a/api/__pycache__/settings.cpython-313.pyc b/api/__pycache__/settings.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3ed8507aa05c3cb16d4cb395be47d3d1339794c0 GIT binary patch literal 3500 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 literal 0 HcmV?d00001 diff --git a/api/__pycache__/wsgi.cpython-313.pyc b/api/__pycache__/wsgi.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0bc4a855e0a9e241d38502d9a7701edf4d889c68 GIT binary patch literal 629 zcmYjPL2DC16rS0QP1&?T#P&QCF9EYdgtH@| z!ABG!jUpU*`&eV={e5rG*FHgS@!{&S<;EX2ZsKJW)uKBcZ;`n^e+zZ4OL`^qS}W(5 z!JDYpCyA0{o{_QAgcY0=S{*}T!yxEe0`CfCzz{nDvbfBIU?Ty98Nx`e(y4&9fEfrf zW13%;B+DTs!yzjQ!4qb=lEb0H+jR`N(m=R$WcgKrDCxktA!9D!Au#~K#M;6)SO~z^Pry6n4!sY!8Y+Rkiw`7!?-M#07 z-a#Dg93Axsy(oTl(0%=K=X}jg9vZNg%gnUuWj&4^eH@pbGUeTch%j;5!wORSj-;%E zoN=vW8Mww2#%wBV*|^2_3C$}t<+c->1I?x^H?#}p#Hzw6pV5(0CvCxvZ995etqMIX z&dSv%i>H06n-0N!6=bN}{`wf>e_kEe=JyZ|exvOl$omjn1mDrdSG4hEGyL5AhMxUw OZe2DXTr~8W>-i7BQnSpECACaHDL+43Hz%{WL^rV@6U-~tkB`sH%PfhH*DI*J#bJ}1pHiBW YYFESxGzVl)F^KVznURsPh#ANN0A1fBGynhq literal 0 HcmV?d00001 diff --git a/books/__pycache__/admin.cpython-313.pyc b/books/__pycache__/admin.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a1ace53b9980d14410620a34e2abbecf133f2624 GIT binary patch literal 421 zcmey&%ge<81kYa^W-bEKk3k$5V1_b2_W&7F8G;#t8NC_27>gJcKx`&&CNJh9W-pc^ z76pbF#vrgcFs%?eh!>R);>9qVGD1X2(#3+%mCmfm@)Bf(CgUyE#FX63JWZxsEKd3P z*|)fyON&eLb3=<$i~Ka%Z}FvMCFZ5)>m}#sl@w(r6@ff-izf-FvRE%SKP5G%xQGQP zRKyArXDQAsNxj8Ul$xGdT#{O}lHoH@l;M_%enx(7s(yNDVs5d%OKNd;Nq&KTN@|%t z$Qa!mpjzF;f=n>4SRd>fy@JYH95z7nOLJ1~iakBad%s!w literal 0 HcmV?d00001 diff --git a/books/__pycache__/apps.cpython-313.pyc b/books/__pycache__/apps.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..34961d4a965c6bbd71a736d8ecab4d5860e15c54 GIT binary patch literal 514 zcmXv~Jxc>Y5Z%3x7>z+qR8$nyLcAimLIevDqGF+-#kRt-@iyn0yW4YjPtaDd6r21A z|Ba&MRGd1z*s7x*cB#9 z3DzwXl^Bbv*=lG{(mUZbPiYtzB$eSYm3_tYFrs&%-Kmu@sahmwBPK(V=dzvO3;W?w zve(JFNl)N?dGF0ze6KYgkHzf2ejd2GHa^}q3;Xl3-L6m?=M2)-{qooY(KOV)Th5#G V?Lr7Yz{XF-fz6lT7nm~Y`U4zvgwFr~ literal 0 HcmV?d00001 diff --git a/books/__pycache__/models.cpython-313.pyc b/books/__pycache__/models.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d4c8b759f43b6ddf8d0407709dd2a0ac2b07b522 GIT binary patch literal 3430 zcmdrPOK%&;d6!(0%Oxp_q~4}v`jv`~MIzS2aOUy4{)XQ5CV&pxS}>%?lQAW zS61MFry@cQvJe-^=~$Ckw!}7me}U} zn@rp_N7=;5&oKVw`t(`i(`TE!{6w~7VkTdCsLL#Aszu$a1}VxGL6fO-P1&Fh!=zkE zw$>>3v7zd(oRn8}(~|WSh4QPars#4}p-%9liIZZn7#&Tn8AT;oD9c4NnO4ko%P1xD z%9G@>VXO~ns%Z_$CDo?PWc_LqrKdDdE@_6Gm+DrLURVuJYJLEq!qkNDc48~B8#xsE zcbE5tYn4Jw#R#}1n^U-{~XEg|q7fg;JtjG|D$P%aMAe`tVE|DW{(M3EtF2_Ss za5n>K#F2B^98U|!ZFBe*j>qPB-*A!~@#chV*SQVn$aN;?&!UN!256%nE)7u-efOOt z2-4Uk5sG&`5PLSVu+x%R& z7=igczck;ru%l@cBv5aT1DiU*re2sc^0qZW-UVx3`494LkVnNHNaOutFBvHG#jjBA zA%yq|K03-RJRYB;o@{13JvH};dQ zGn1RtlUG*dvSv|EFKZgC2V1Y7{0y3q`h}vrAweoDSZl9X>TN`bWk6cAV23zI-oqn# zR@Mx4MKQ?`Qha_{QuVyDfwe>~TZW_?e~{#S9%#Nvue274^Aa)#^Pz+=S@>QaZBTAO z(pq{NDp{O=X@It4n1l50oZEE71}PhlJE_Z3Elr_Z8Ok5!5u%6SWSpsJt0tNht0x1G zBtgcIBn4>irw9h-K}07{`S3UaJ0&g z+QI$`3h-6ROZHX3a)Km5VlQh7E-gu)lw}P~04gX+t12-qP1P0MKry}(X>ne{mqM<= zuH-s`8vrOP(SW!(zL=3xlk-!lj7YF>Qena%idxWTl&1viCJl}+Elx^HVkRri&Zjev zsV6lqrpD75@&LuX3x=s$>JvpQ%9=K%TS`G86RM)+31%j88oftkekcMZns21yLaQ*o_yi3`lLb(L3gpHFAP_q+#3@LgAq!v+^ z%a&qF5_t$R+mrUakO3qS*!lY^+}IzPTBNt~xYpKPc~on^Qkk-`Q#T`Y?R>I3aM(Rq z<>NJP`_8rJQ(xYx@>gr#@Xq-2^)KhD{Eb%rsn^x%uFRgcG5+w8FM8mM*7)`#KDN)t zYT=%*5<7`nXY>aT=XY1qr+!=M-2>md-}Bzj-}%D(eaEer%ZDBDYUFmUJyZ*XYHi^k zd~RF0jR{1K{Luq{bkDi(zf;N7fDZH@1p4jH0=?KvM7}X#^Pr69_O=$N~cFrQki=?Vi00Swi-uNB4W=A;9yQ-2mXx z;S~-X1P1o{_XGDT6X@*z`qro!kB|_2Ak{$YUGEzE@*m53!APtaI==4&Mp2^PTM|Gm+Qgodoy9R9?d-sPT5j5GXWiqZbG7mu7YByYzaCHa`7WNB@(=2H>V1Om2CvX=fli$)%l?h=9y4A4WQLEK=rI#JX2y=0ksmoH koA^<1vLmmBL3Zr(F>EwnGl0JSkmcC^=h2@S_}DJ`H&%V~djJ3c literal 0 HcmV?d00001 diff --git a/books/__pycache__/serializers.cpython-313.pyc b/books/__pycache__/serializers.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..aa402c8af639d29cd3a8e65a806c5ae79bb6dd97 GIT binary patch literal 766 zcmY*Xzi$&U7`5+bRGOq!8>kwPDh9+2?RDvb5CcLCt=a*PM6#}p6Rccv>1PL2{s4r; z!qPv2nZJYqQCaH5lnp6GtbE^HLW!k&{yyLHd%owJ)$1z^$M}1!zvBFpn#Bm`#q1>( zmrO9hkJupxzQcqk{3Gws2Y-icv4>0q+f0NV{;Iavd^;cbRSjW3O5!Os33qpl0-fdh zy#h1k)mrepC2xE~~;+gKLcJ61NEQaCP_GRt!*zp#^}=4w)ovZ0dFtw=d6 zx|5vhRVmLWSw4T$l(MJ6*j$g)sE`s$oeZYk)FV_5eeBSHJ-1M{!Y^g{gvR9#b&47g@grUz^#Foyg$@UV&)nvTIQjl1Z@sbh3VJ*u{ zEib;s;HSxci#sJNF)uw|ue2zqxQH1jU&IC?K+e1+KSes>u2QWrs}7cCgv9FyQCIpm*f}dr=*tYCjkx8 z%>kOEn^=$u<`wIMY}6~Lyv1RYo1apelWJGQ2Q&lZ#A00_@qw9Bh=heN)t9zMO|1yig2WBRIrbg}}9-s~Y9tT!u literal 0 HcmV?d00001 diff --git a/books/__pycache__/views.cpython-313.pyc b/books/__pycache__/views.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f3d122ad205984b2ca54907f544d5943b1dab8ae GIT binary patch literal 3894 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 P8ty5Fd;ZA*!9@NSFGFLY literal 0 HcmV?d00001 diff --git a/books/migrations/__pycache__/__init__.cpython-313.pyc b/books/migrations/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c14e25aced0f2120f5c1b0e472caa7113e95b6cf GIT binary patch literal 163 zcmey&%ge<81m9j6W`gL)AOZ#$p^VQgK*m&tbOudEzm*I{OhDdekkleQ z#N1+im(=3ylKcYwl+-f)r2PDB-JHzg65YgtOfaulKQ}YID6u3nKd)FnK0Y%qvm`!V jub}c4hfQvNN@-52T@fqLNRXAqAjU^#Mn=XWW*`dyNDe7K literal 0 HcmV?d00001 diff --git a/books/views.py b/books/views.py index 698b0f8..5b68e80 100644 --- a/books/views.py +++ b/books/views.py @@ -1,4 +1,5 @@ from rest_framework.decorators import api_view +from rest_framework.parsers import FormParser, MultiPartParser from rest_framework.views import APIView from rest_framework.response import Response from rest_framework.permissions import IsAuthenticatedOrReadOnly, IsAuthenticated @@ -9,6 +10,7 @@ from .serializers import BookSerializer class BookListCreateView(APIView): permission_classes = [IsAuthenticatedOrReadOnly] + parser_classes = [MultiPartParser, FormParser] def get(self, request): books = Book.objects.all()