[PYTHON] Django Note 4

8 HTML-Anpassung (Web-App-Datei)

Statische Dateien sind erforderlich, um eine Vielzahl von Designs zu erzielen.

In Django gibt es zwei Arten von statischen Dateien. Das erste sind vorab hochgeladene statische Dateien wie JavaScript, CSS und Image. Das zweite sind vom Benutzer hochgeladene MP4s und PDFs. Solche Dateien werden als Mediendateien bezeichnet.

8.1 Static Files Legen Sie statische Dateien in einem statischen Ordner in jeder APP ab.

Zum Beispiel:

mysite/
    manage.py
    mysite/
        static/
            css/
                bootstrap.min.css
            js/
                bootstrap.min.js
        __init__.py
        settings.py
        urls.py
        wsgi.py
    myapp/
        static/
            css/
                bootstrap.min.css
            js/
                bootstrap.min.js
        templates/
        __init__.py
        admin.py
        apps.py
        models.py
        tests.py
        urls.py
        views.py

Bei Verwendung mit Vorlage: {% static 'file PATH' %}

index.html


<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    {% load static %}
  </head>
  <body>
    <p>Test Page</p>
    <script src="{% static 'js/bootstrap.min.js' %}"/>
  </body>
</html>

STATIC_URL kann in settings.py für den Ordner für statische Dateien angegeben werden.

e.g.

#STATISCHE DATEIEN Dateizugriffspfad
STATIC_URL = '/static/'
#STATISCHE DATEIEN Datei speichern PATH
STATIC_ROOT = '/static/'

8.2 Media Files

Geben Sie den Parameter MEDIA_ROOT in settings.py an. e.g.

#Mediendatei speichern PATH
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
#Zugriff auf den Mediendateipfad
MEDIA_URL = '/media/'

models.py Wie schreibe ich:

models.py


        ...
class File(models.Model):
    filedata = models.FileField(upload_to='files')
    filepic = models.ImageField(null=True, upload_to='pics')
    uploadtime = models.DateTimeField('updated time', default = timezone.now)
        ...

Der Parameter upload_to von FileFiled gibt einen Unterordner an. Für MEDIA_ROOT = os.path.join (BASE_DIR, 'media'), FileField (upload_to = 'files'): Die hochgeladenen Dateien werden in . / Media / files / gespeichert.

views.py Wie schreibe ich: Zum Zeitpunkt des Uploads:

      ...
def play(request, id):
    f = File.objects.get(id=id)
    data = {'video': f}
    #Verwenden Sie den URL-Wert
    data['url'] = f.filedata.url
    return render(request, 'player.html', data)
      ...

Dateiverwendung:

views.py


      ...
def uploadfile(request):
    if request.method != 'POST':
        return render(request, 'upload.html')

    if not form.is_valid():
        return render(request, 'upload.html')

    if 'filedata' in request.FILES:
        filedata = request.FILES['filedata']
    else:
        return render(request, 'upload.html')

    if 'filepic' in request.FILES:
        filepic = request.FILES['filepic']
    else:
        filepic = None

    try:
        f = File(filedata=filedata, filepic=filepic)
        f.save()
        return render(request, 'success.html')
    except:
        return render(request, 'upload.html')
      ...

Wie schreibe ich Vorlage:

player.html


<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    {% load static %}
  </head>
  <body>
    <video src={{ url }} width="640" height="480" preload="none" autoplay class="videoPlayer" controls="controls">
        Your browser does not support the video tag.
    </video>
    <script src="{% static 'js/bootstrap.min.js' %}"/>
  </body>
</html>

Wie schreibe ich Projekt urls.py:

urls.py


from django.conf.urls import include, url
from django.contrib import admin
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^play/(?P<id>\d+)/$', views.play, name='play'),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

So löschen Sie eine Datei:

Vergessen Sie nicht, Dateien in der Datenbank zu löschen, nicht nur Objekte:

views.py


        ...
try:
    existfileObj = File.objects.get(filename=filename)
    os.remove(existfileObj.filedata.path)
    existfileObj.delete()
except File.DoesNotExist:
    print('File in not exist.')
    existfileObj = None
else:
    #Verwenden Sie den Pfadwert
    os.remove(existfileObj.filedata.path)
    os.remove(existfileObj.filepic.path)
    existfileObj.delete()
        ...

Recommended Posts

Django Note 4
Django Note 5
Django Note 1
Django Note 3
Django Note 2
Memo
Django
Memo
Memo
Django Girls Tutorial Hinweis
(Hinweis) Django in Vagrant-Umgebung
Django-Update
pyenv note
[Anmerkung] Django-Projekterstellung und Terminologie
Django Memorandum
Django-Suche
Django Installation
GroupBy Hinweis
Django Zusammenfassung
Django-Test
Django # 2 (Vorlage)
argparse note
Django zum Anfassen
Hinweis: Python
Berühre Django
Django Memo
Django Zusammenfassung
Django Grundlagen
Django Shoho
Django Grundeinstellungen
Ansible Note
Django + Docker
Django Glossar
Python-Notiz
Django Installation
[Hinweis] Führen Sie Django unter Amazon Linux 2 aus
Django: Referenzen
Hinweis: Senden Sie eine E-Mail mit Django
direnv note
Django-Start
Django Memo
[Hinweis] RepresenterError
Django NullCharField
Stellen Sie Django api mit Heroku bereit (persönliches Memo)
(Hinweis) Suchreihenfolge der Vorlagendateien in Django
Hinweise zum Aktivieren von PostgreSQL mit Django
DJango Hinweis: Von Anfang an (Formularverarbeitung)
Django Umweltbau
[Hinweis] Ändern der Bildgröße
Python lernen note_002
Django ~ settings.py edition ~
Hinweis: Python-Dekorator
Python-Programmierhinweis
Django Heroku Deploy 1
[Python] Lernnotiz 1
Django HTML Vorlage Teil 2
Django Anfrageformular 2
Django startete Teil 1
Django-Modell: ManyToManyField