Django

Hoe het bestand in Django te downloaden?

Hoe het bestand in Django te downloaden?
De downloadoptie is een algemene vereiste voor elke website zoals het online boek, gratis applicatiesoftware, gratis games, enz. De gebruikers van de site kunnen de benodigde bestanden op hun apparaat downloaden als de downloadfunctie voor de site is geïmplementeerd. Het bestand kan worden gedownload na het uitvoeren van een bepaalde URL of het klikken op de downloadlink en het verkrijgen van toestemming van de gebruiker. De manieren om een ​​tekstbestand te downloaden zonder enige downloadlink en een PDF-bestand met behulp van de downloadlink in de Django-app worden in deze tutorial getoond.

Vereisten:

Voordat u het script van deze tutorial oefent, moet u de volgende taken uitvoeren:.

  1. Installeer de Django versie 3+ op Ubuntu 20+ (bij voorkeur)
  2. Een Django-project maken
  3. Voer de Django-server uit om te controleren of de server correct werkt of niet.

Stel een Django-app in:

Voer de volgende opdracht uit om een ​​Django-app met de naam te maken download app. $ python3 beheren.py startapp downloadapp

Voer de volgende opdracht uit om de gebruiker te maken voor toegang tot de Django-database:. Als u de gebruiker eerder hebt gemaakt, hoeft u de opdracht niet uit te voeren.

$ python3 beheren.py createsuperuser

Voeg de app-naam toe aan de INSTALLED_APP deel van de instellingen.py het dossier.

INSTALLED_APPS = [

'download app'
]

Maak een map met de naam Sjablonen binnen in de download app map en stel de Sjablonen locatie van de app in de SJABLONEN deel van de instellingen.py het dossier.

SJABLONEN = [

… .
'DIRS': ['/home/fahmida/django_pro/dopwnloadapp/templates'],
… .
,
]

Een tekstbestand downloaden:

Wijzig de keer bekeken.py bestand dat zich in de download app map met het volgende script. De download bestand() functie zal een tekstbestand downloaden met de naam tekst.tekst voor een bepaald URL-pad. Het bestand is geopend om te lezen aan het begin van het script. Het mime-type en de header-informatie zijn ingesteld om het bestand te downloaden.

keer bekeken.py

# Mimetypes-module importeren
mimetypes importeren
# import os-module
importeer os
# Import HttpResponse-module
van django.http.reactie importeren HttpResponse
def download_file(verzoek):
# Definieer de Django-projectbasismap
BASE_DIR = os.pad.dirname(os.pad.dirname(os.pad.abspath(__file__)))
# Definieer de naam van het tekstbestand
bestandsnaam = 'test'.tekst'
# Definieer het volledige bestandspad
bestandspad = BASE_DIR + '/downloadapp/Files/' + bestandsnaam
# Open het bestand voor het lezen van inhoud
path = open(bestandspad, 'r')
# Stel het mime-type in
mime_type, _ = mimetypes.Guess_type(bestandspad)
# Stel de retourwaarde van de HttpResponse in
response = HttpResponse(pad, content_type=mime_type)
# Stel de HTTP-header in voor verzending naar browser
response['Content-Disposition'] = "bijlage; bestandsnaam=%s" % bestandsnaam
# Retourneer de antwoordwaarde
antwoord terug:

Open nu de URL's.py bestand van het Django-project en werk het bestand bij met het volgende script:. Het tekstbestand wordt gedownload als het pad, 'downloaden/' wordt gebruikt na de basis-URL.

URL's.py

# Padmodule importeren
van django.URL-importpad
# Weergaven importeren
van downloadapp importweergaven
# Stel pad in om te downloaden
urlpatronen = [
pad('download/', weergaven.download bestand),
]

Open de browser en voer de volgende URL uit die het downloaddialoogvenster voor de gebruiker zal openen:.

http://localhost:8000/download

Het bestand wordt gedownload als de gebruiker klikt op de OK knop na het selecteren van de Sla bestand op keuze.

Download PDF-bestand met behulp van de sjabloon:

Er is een sjabloon vereist om te maken als u de downloadoptie met de downloadlink wilt toevoegen. Maak een HTML-bestand met de naam het dossier.html met het volgende script om de downloadlink in de browser weer te geven om een ​​PDF-bestand te downloaden. Volgens de hyperlink die in het script wordt gebruikt, wordt de CF.pdf het dossier.

het dossier.html


Download bestand



Bestand downloaden met Django


Download PDF


Maak een ander weergavebestand met de naam weergaven2.py met het volgende script. De download_pdf_file() functie is gedefinieerd in het script om een ​​bestand te downloaden met behulp van de downloadlink. De bestandsnaam wordt doorgegeven als de tweede argumentwaarde van deze functie. Het bestand is geopend voor lezen in binaire modus voor het PDF-bestand. Als de waarde van de bestandsnaam argument leeg is, dan is de het dossier.html bestand wordt weergegeven in de browser om de downloadlink te tonen.

weergaven2.py

# Mimetypes-module importeren
mimetypes importeren
# import os-module
importeer os
# Import HttpResponse-module
van django.http.reactie importeren HttpResponse
# Importeer rendermodule
van django.sneltoetsen import render
# Definieer functie om pdf-bestand te downloaden met behulp van sjabloon
def download_pdf_file(verzoek, bestandsnaam="):
als bestandsnaam != ":
# Definieer de Django-projectbasismap
BASE_DIR = os.pad.dirname(os.pad.dirname(os.pad.abspath(__file__)))
# Definieer het volledige bestandspad
bestandspad = BASE_DIR + '/downloadapp/Files/' + bestandsnaam
# Open het bestand voor het lezen van inhoud
path = open(bestandspad, 'rb')
# Stel het mime-type in
mime_type, _ = mimetypes.Guess_type(bestandspad)
# Stel de retourwaarde van de HttpResponse in
response = HttpResponse(pad, content_type=mime_type)
# Stel de HTTP-header in voor verzending naar browser
response['Content-Disposition'] = "bijlage; bestandsnaam=%s" % bestandsnaam
# Retourneer de antwoordwaarde
antwoord terug:
anders:
# Laad de sjabloon
return render(verzoek, 'bestand'.html')

Update de URL's.py bestand met het volgende script om een ​​bepaald PDF-bestand te downloaden via de downloadlink download.

URL's.py

# Padmodule importeren
van django.URL-importpad
# Importeer weergaven en weergaven2
van downloadapp import views, views2
# Stel pad in om te downloaden
urlpatronen = [
pad('download/', weergaven.download bestand),
pad('downloadpdf/', views2.download_pdf_file, naam='download_pdf_file'),
pad('downloadpdf//', views2.download_pdf_file, naam='download_pdf_file'),
]

Open de browser en voer de volgende URL uit die de . weergeeft het dossier.html in de browser.

http://localhost:8000/downloadpdf

Als de gebruiker op de downloadlink klikt, wordt de CF.pdf wordt doorgegeven als de waarde van de bestandsnaam argument.

Als dit bestand bestaat op de basislocatie van de app, verschijnt het volgende dialoogvenster:. De gebruiker kan het bestand in de browser of de documentviewer openen vóór het downloaden of het bestand direct downloaden zonder het te openen door te selecteren: het bestand opslaan optie en druk op de OK knop.

Conclusie:

Het toevoegen van een downloadoptie voor tekst- en PDF-bestanden in de Django-applicatie werd in deze tutorial getoond met behulp van een eenvoudig script. De nieuwe Django-gebruikers zullen na het lezen van deze tutorial een idee krijgen om een ​​downloadoptie toe te voegen zonder en met een downloadlink in de Django-app.

Cursor springt of beweegt willekeurig tijdens het typen in Windows 10
Als u merkt dat uw muiscursor vanzelf springt of beweegt, automatisch, willekeurig tijdens het typen op een Windows-laptop of -computer, dan kunnen en...
De scrollrichting van de muis en touchpads omkeren in Windows 10
Muis en Touchpads maken computergebruik niet alleen eenvoudig, maar ook efficiënter en minder tijdrovend. We kunnen ons een leven zonder deze apparate...
Hoe de muisaanwijzer en cursorgrootte, kleur en schema op Windows 10 te veranderen
De muisaanwijzer en cursor in Windows 10 zijn zeer belangrijke aspecten van het besturingssysteem. Dit geldt ook voor andere besturingssystemen, dus i...