Ako nastaviť nahrávanie súborov do S3 prostredníctvom Django

Vyskúšajte Náš Nástroj Na Odstránenie Problémov

Pôvodne publikoval David Bruton na blog.theodo

Ukážem vám, ako správne nakonfigurovať váš projekt Django, aby vám umožnil bezpečné a bezpečné nahrávanie súborov do vedra AWS S3. Je to skvelý spôsob, ako pracovať so súbormi v Django, a ako uvidíte v tejto príručke, nastavuje sa rýchlo a ľahko.

Nastavenie jednoduchej aplikácie Django

Toto môžete preskočiť, ak už máte projekt Django má stručného sprievodcu nastavením projektu Django tu ktorými som sa riadil, aby som rýchlo nastavil demo aplikáciu.



Pridanie fotomodelu

Po dokončení základného nastavenia v návode môžete vytvoriť model Fotky a začať testovať svoje odovzdania. Nižšie som zahrnul triedu fotografických modelov, ktoré som na to použil, aby ste do svojho | _+_ | mohli pridať nasledujúce položky súbor:

ružová obrazovka smrti
models.py

Toto je jednoduchý model Django, ktorý možno použiť na ukladanie fotografií. Model má pole súboru Django pre samotný súbor s fotografiou, ako aj názov, pole vytvorené v čase a dátume a pole UUID.

Správca Django umožňuje nahrávanie súborov pomocou poľa Súbor na modeli, čo znamená, že túto vstavanú funkciu môžeme používať bez toho, aby sme museli tráviť čas nastavovaním formulárov na testovanie našich odovzdaní.

Testovanie predvoleného správania pri odosielaní súborov

Najprv musíme prejsť na stránku správcu vášho projektu a nájsť model fotografií, ktorý ste definovali. Uistite sa, že ste svoj model zaregistrovali vo svojom | _+_ | aby ste k nemu mali prístup tu.

administrátorský obrázok 1024x544

Kliknite na položku Pridať fotografiu a budete môcť pomenovať svoj fotografický objekt a vybrať súbor, ktorý chcete nahrať, ako je uvedené nižšie. Keď to urobíte, kliknite na Uložiť.

pridať novú fotografiu 1024x241

názov a súbor 1024x365

úspešné nahranie 1024 x 333

Ak to urobíme, vidíme, že súbor je nahraný do koreňového adresára aplikácie.

Len zriedka chceme ukladať nahrané súbory, ale dá sa to ľahko zmeniť pomocou | _+_ | v súbore nastavení vašej aplikácie. Toto definuje cestu, na ktorej budú uložené odovzdané súbory médií.

príklad komponentu tabulátora reagovať

Aby sme to dokázali, môžeme túto hodnotu nastaviť na cestu v aplikácii pomocou | _+_ | ktorý je definovaný automaticky pri generovaní projektu pomocou django. Ak do | |

from django.db import models import uuid class Photo(models.Model): uuid = models.UUIDField( primary_key=True, default=uuid.uuid4, editable=False, ) created_at = models.DateTimeField(auto_now_add=True) title = models.CharField(max_length=100) photo = models.FileField()

Ak sa teraz pokúsite nahrať súbor pomocou správcu, uvidíme v koreňovom adresári mojej aplikácie | _+_ | k nahranej fotografii je vytvorená nová cesta k súboru.

cesta k súboru

Stále to však nie je rozumné miesto na ukladanie nahraných súborov z mnohých dôvodov. Ak je váš server na AWS alebo inej cloudovej službe, súbory sa stratia pri škálovaní a vytváraní nových inštancií servera, pretože sú uložené priamo v súborovom systéme inštancie servera. Toto je zásadný problém.

Okrem toho nebudú pri prístupe k nim ľahko dostupné, pretože sú uložené priamo na serveri, najmä ak potrebujete, aby boli súbory ľahko dostupné externe (napr. Aby bol umožnený kontrolovaný prístup iným používateľom alebo webovým stránkam).

Potrebujeme lepšie riešenie na ukladanie týchto súborov na nejaké miesto, ktoré je ľahko prístupné na načítanie nahraných súborov pre tých, ktorí majú povolenie, je škálovateľné na spracovanie veľkého počtu odoslaných súborov do vašej aplikácie Django a zaistí bezpečné uloženie súborov, aj keď sa váš server zvyšuje alebo dole.

Lopaty AWS S3

Služba Amazon Simple Storage Service (S3) ponúka bezpečný, spoľahlivý a škálovateľný úložný systém, ktorý je na toto použitie ideálny. Nastavenie je jednoduché a je možné ho použiť bez ohľadu na to, kde sa nachádza vaša stránka Django.

Nastavenie vedra S3 a povolenie prístupu aplikácii Django

Vedro S3 si môžete ľahko vytvoriť tak, že sa prihlásite do svojho účtu AWS, v konzole AWS prejdete do sekcie S3, kliknete na položku Vytvoriť vedro a nastavíte podľa týchto pokynov. Budete tiež musieť vytvoriť používateľa s programovým prístupom k svojmu účtu AWS v konzole IAM a udeliť mu povolenia pre S3FullAccess, aby vaša aplikácia mohla správne pristupovať k vášmu segmentu. AWS to poskytuje užitočné návod pomôcť to nastaviť

Akonáhle to urobíte, musíte nastaviť prístupový kľúč a tajný prístupový kľúč generovaný pri vytváraní používateľa vo vašom súbore | _+_ | ako je to znázornené nižšie.

admin.py

Nezabudnite tiež odstrániť | _+_ | vlastnosť v súbore nastavení.

Pre vaše produkčné prostredie je najlepšie získať tieto hodnoty z premenných prostredia, než ich naprogramovať v súbore nastavení.

Inštalácia niektorých pomocných knižníc

Sme takmer pripravení začať používať vedro S3 na nahrávanie, stačí nainštalovať 2 knižnice pythonu: | _+_ | a | _+_ |. Boto3 je SDK, ktorú AWS poskytuje pre Python, aby mohol spravovať služby AWS z vášho kódu. Musíme to použiť na zadanie segmentu S3, do ktorého musí byť smerované nahrávanie vašich súborov (môžete sa pozrieť na dokumentáciu k boto3. tu ).

Django-storages je užitočná knižnica, ktorá poskytuje metódy pomocníka pri ukladaní (môžete si prečítať jej dokumentáciu tu ). Budete musieť pridať | _+_ | do vášho | _+_ | aj súbor s nastaveniami.

Ak chcete nainštalovať knižnice, stačí spustiť:

MEDIA_ROOT

vo virtuálnom prostredí, v ktorom je spustená vaša aplikácia, a pridanie týchto knižníc do vášho zoznamu závislostí.

Akonáhle to urobíte, musíte v súbore nastavení definovať niekoľko ďalších premenných:

BASE_DIR

Pri vytváraní vedra S3 budete definovať názov vedra a tiež výber oblasti AWS, v ktorej bude vedený. ​​Sem vložte.

Teraz by sme mali byť pripravení nahrávať súbory priamo do S3 prostredníctvom správcovského nahrávania Django, ktoré sme vyskúšali predtým. Ak znova vyskúšame nahrávanie, uvidíme, že súbory sa už nezobrazujú v koreňovom adresári našej aplikácie, ale sú uložené v vedre S3, ktoré sme nastavili.

Vedro S3 1024x303

Teraz sme schopní tieto súbory načítať v S3 v konzole AWS alebo priamo v správcovi Django.

Záver

Dokázali sme rýchlo a jednoducho nastaviť nahrávanie súborov z úplne základného Django. Teraz by ste to mali mať možnosť ľahko nastaviť v budúcich projektoch Django, aby bolo vaše nahrávanie súborov bezproblémové.

jquery post form data ajax

#django #python #vývoj webových aplikácií

blog.theodo.com

Ako nastaviť nahrávanie súborov do S3 prostredníctvom Django

V tomto príspevku vám ukážeme, ako správne nakonfigurovať projekt Django, aby vám umožnil bezpečné a bezpečné nahrávanie súborov do vedra AWS S3. Je to skvelý spôsob, ako pracovať so súbormi v Django, a ako uvidíte v tejto príručke, nastavuje sa rýchlo a ľahko.

Pozri Tiež: