Hvordan laste ned filen i Django?

Hvordan laste ned filen i Django?
Nedlastingsalternativet er et generelt krav for ethvert nettsted som online -boken, gratis applikasjonsprogramvare, gratis spill osv. Brukere av nettstedet kan laste ned de nødvendige filene på enheten deres hvis nedlastingsfunksjonen er implementert for nettstedet. Filen kan lastes ned etter utførelse av en bestemt URL eller klikke på nedlastingskoblingen og få tillatelse fra brukeren. Måtene å laste ned en tekstfil uten noen nedlastingslenke og en PDF -fil ved å bruke nedlastingskoblingen i Django -appen vises i denne opplæringen.

Forutsetninger:

Før du øver skriptet til denne opplæringen, må du fullføre følgende oppgaver.

  1. Installer Django versjon 3+ på Ubuntu 20+ (helst)
  2. Lag et Django -prosjekt
  3. Kjør Django -serveren for å sjekke at serveren fungerer riktig eller ikke.

Sett opp en Django -app:

Kjør følgende kommando for å opprette en Django -app som heter Last nedaPP. $ Python3 Administrer.py startapp nedlasting

Kjør følgende kommando for å opprette brukeren for tilgang til Django -databasen. Hvis du har opprettet brukeren før da, trenger du ikke kjøre kommandoen.

$ Python3 Administrer.Py CreateSuperuser

Legg til appnavnet i Installert_app del av Innstillinger.py fil.

Installert_apps = [
..
'DownloadApp'
]

Opprett en mappe som heter Maler inne i Last nedaPP mappe og angi malens Plasseringen av appen i Maler del av Innstillinger.py fil.


.. .
'Dirs': ['/home/fahmida/django_pro/dopwnloadapp/maler'],
.. .
,
]

Last ned en tekstfil:

Endre utsikt.py fil som er inne i Last nedaPP mappe med følgende skript. De Last ned fil() Funksjon vil laste ned en tekstfil som heter tekst.tekst for en bestemt URL -bane. Filen har åpnet for lesing i begynnelsen av skriptet. MIME -typen og overskriftsinformasjonen er satt til å laste ned filen.

utsikt.py

# Importer mimetypermodul
Importer mimetyper
# Importer OS -modul
Importer OS
# Importer httpResponse -modul
Fra Django.http.Responsimport HttpResponse
def download_file (forespørsel):
# Definer Django Project Base Directory
Base_dir = OS.sti.Dirname (OS.sti.Dirname (OS.sti.abspath (__ file__))))
# Definer tekstfilnavn
filnavn = 'test.tekst'
# Definer hele filstien
filepath = Base_dir + '/last ned/files/' + filnavn
# Åpne filen for å lese innhold
bane = åpen (filepath, 'r')
# Angi MIME -typen
mime_type, _ = mimetyper.Guess_type (FilePath)
# Angi returverdien til HttpResponse
Response = httpResponse (sti, content_type = mime_type)
# Angi HTTP -overskriften for sending til nettleser
Response ['Content-Disposition'] = "vedlegg; filnavn = % s" % filnavn
# Returner responsverdien
Returrespons

Nå, åpne URLS.py fil fra Django -prosjektet og oppdater filen med følgende skript. Tekstfilen laster ned hvis banen, 'nedlasting/' brukes etter basen url.

URLS.py

# Importer banemodul
Fra Django.URLS importerer bane
# Importer visninger
Fra nedlasting av importvisninger
# Sett banen for nedlasting
urlpatterns = [
bane ('nedlasting/', visninger.Last ned fil),
]

Åpne nettleseren og utfør følgende URL som åpner dialogboksen Last ned for brukeren.

http: // localhost: 8000/last ned

Filen blir lastet ned hvis brukeren klikker på Ok etter å ha valgt Lagre filen alternativ.

Last ned PDF -fil ved hjelp av malen:

Det kreves en mal for å opprette hvis du vil legge til nedlastingsalternativet med nedlastingskoblingen. Lag en HTML -fil som heter fil.html med følgende skript for å vise nedlastingskoblingen i nettleseren for å laste ned en PDF -fil. I følge hyperkoblingen som brukes i skriptet, vil du laste ned Jfr.PDF fil.

fil.html


Last ned fil



Last ned fil ved hjelp av django


Last ned PDF


Lag en annen visningsfil som heter Visninger2.py med følgende skript. De last ned_pdf_file () Funksjonen er definert i skriptet for å laste ned en fil ved hjelp av nedlastingskoblingen. Filnavnet vil bli bestått som den andre argumentverdien for denne funksjonen. Filen har åpnet for lesing i binær modus for PDF -filen. Hvis verdien av filnavn Argumentet er tomt, da fil.html Filen vises i nettleseren for å vise nedlastingskoblingen.

Visninger2.py

# Importer mimetypermodul
Importer mimetyper
# Importer OS -modul
Importer OS
# Importer httpResponse -modul
Fra Django.http.Responsimport HttpResponse
# Import Render Module
Fra Django.snarveier import gjengivelse
# Definer funksjon for å laste ned PDF -fil ved hjelp av mal
def download_pdf_file (forespørsel, filnavn = "):
Hvis filnavn != ":
# Definer Django Project Base Directory
Base_dir = OS.sti.Dirname (OS.sti.Dirname (OS.sti.abspath (__ file__))))
# Definer hele filstien
filepath = Base_dir + '/last ned/files/' + filnavn
# Åpne filen for å lese innhold
bane = åpen (FilePath, 'RB')
# Angi MIME -typen
mime_type, _ = mimetyper.Guess_type (FilePath)
# Angi returverdien til HttpResponse
Response = httpResponse (sti, content_type = mime_type)
# Angi HTTP -overskriften for sending til nettleser
Response ['Content-Disposition'] = "vedlegg; filnavn = % s" % filnavn
# Returner responsverdien
Returrespons
ellers:
# Last malen
Retur Render (forespørsel, 'fil.html ')

Oppdater URLS.py fil med følgende skript for å laste ned en bestemt PDF -fil ved å bruke nedlastingskoblingen.

URLS.py

# Importer banemodul
Fra Django.URLS importerer bane
# Importer visninger og visninger2
Fra nedlastingapp importvisninger, visninger2
# Sett banen for nedlasting
urlpatterns = [
bane ('nedlasting/', visninger.Last ned fil),
bane ('downloadpdf/', views2.last ned_pdf_file, name = 'download_pdf_file'),
bane ('downloadpdf //', visninger2.last ned_pdf_file, name = 'download_pdf_file'),
]

Åpne nettleseren og utfør følgende URL som viser fil.html i nettleseren.

http: // localhost: 8000/downloadpdf

Hvis brukeren klikker på nedlastingskoblingen, er Jfr.PDF vil bli passert som verdien av filnavn argument.

Hvis denne filen eksisterer på basenes plassering av appen, vises følgende dialogboks. Brukeren kan åpne filen i nettleseren eller Document Viewer før nedlastingen eller last ned filen direkte uten å åpne den ved å velge lagringsfilen alternativ og trykke på Ok knapp.

Konklusjon:

Å legge til et nedlastingsalternativ for tekst- og PDF -filer i Django -applikasjonen ble vist i denne opplæringen ved hjelp av et enkelt skript. De nye Django -brukerne vil få en ide om å legge til et nedlastingsalternativ uten og med en nedlastingslenke i Django -appen etter å ha lest denne opplæringen.