Link zu Video

Django, Flask, Bottle, WSGI, CGI…
Pitwheazle
User
Beiträge: 873
Registriert: Sonntag 19. September 2021, 09:40

Hallo Leute - da bin ich mal wieder:
Mein Rechentrainer-Video liegt zurzeit noch auf Youtube. Da ist aber jetzt Werbung drin und daher möchte ich den Film auf meine Seite umziehen . In den Beschreibungen klingt das immer so, als wäre das ja ganz einfach - für mich mal wieder nicht.
Ich habe folgendes Template erstellt:

Code: Alles auswählen

<!DOCTYPE html>
<html lang="de">
<video width="320" height="270" controls autoplay>
<source src="static/medien/Rechentrainerfilm.mp4" type="video/mp4“></source>
</video>
</html>
und den Film in "Rechentrainer.app > accounts >static > medien gespeichert.
Bild
Wie muss ich den Link zum Speicherplatz im Template benennen?
Benutzeravatar
sparrow
User
Beiträge: 4195
Registriert: Freitag 17. April 2009, 10:28

Ich würde einfach in den anderen Templates schauen, in denen du Dateien aus Static verwendest.
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

benutzt du in deine Templates nicht `{% load_static %}` und {% static ... %}`, damit Django die Pfade basierend auf `static_root` in der settings.py auflöst?

Gruß, noisefloor
Benutzeravatar
snafu
User
Beiträge: 6742
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Hier wird beschrieben, wie man Pfade zu statischen Dateien in Django-Templates einbindet:
https://docs.djangoproject.com/en/5.0/h ... tic-files/
Pitwheazle
User
Beiträge: 873
Registriert: Sonntag 19. September 2021, 09:40

Ich habe es jetzt so geändert:

Code: Alles auswählen

<!DOCTYPE html>
{% load static %}
<html lang="de">
<head>       
    <title>Rechentrainerfilm</title>
    <meta charset="utf-8">
    <link rel="stylesheet" href="{% static 'styles.css' %}">
</head>
<video width="320" height="270" controls autoplay>
<source src="{% static "accounts/medien/Rechentrainerfilm.mp4" %}" type="video/mp4“></source>
</video>
</html>
und in den settings steht:

Code: Alles auswählen

STATIC_ROOT = BASE_DIR / "staticfiles"
STATIC_URL = '/staticfiles/'
STATICFILES_DIRS = [BASE_DIR /"static"] 
(Wenn ich da auch mal wieder nicht so genau weiß, was das bedeutet (wer hätte es gedacht).)
... es geht immer noch nicht.
Benutzeravatar
sparrow
User
Beiträge: 4195
Registriert: Freitag 17. April 2009, 10:28

Dann schauen wir mal.

Hier schreibst du:
Pitwheazle hat geschrieben: Samstag 24. Februar 2024, 16:38und den Film in "Rechentrainer.app > accounts >static > medien gespeichert.
Also \accounts\static\medien

Dann versuchst du im ersten Beitrag von hier zu laden:
static/medien/

Das ist ja schon einmal ein ganz anderer Pfad.

Jetzt versuchst du von hier zu laden:
accounts/medien/

Und jetzt hören wir mal auf mit raten und gucken mal wo der Film wirklich liegt.

Ich würde sagen, zumindest mit der Lösung warst du im ersten Beitrag nahe dran. Nur dass du irgendwie wieder verdrängt hast, wie mat static-Dateien lädt.
Pitwheazle
User
Beiträge: 873
Registriert: Sonntag 19. September 2021, 09:40

sparrow hat geschrieben: Samstag 24. Februar 2024, 21:27 ... Nur dass du irgendwie wieder verdrängt hast, wie mat static-Dateien lädt.
Scheint so :)
... konnte ich das früher mal?
Pitwheazle
User
Beiträge: 873
Registriert: Sonntag 19. September 2021, 09:40

Oh ihr Allwissenden - habt Mitleid mit einem alten verwirrten Mann! Ich bekomme es nicht hin.
Was stimmt hier nicht:

Code: Alles auswählen

<!DOCTYPE html>
{% load static %}
<html lang="de">
<head>       
    <title>Rechentrainerfilm</title>
    <meta charset="utf-8">
    <link rel="stylesheet" href="{% static 'styles.css' %}">
</head>
<video width="320" height="270" controls autoplay>
    <source src="{% static '/medien/Rechentrainerfilm.mp4' %}"  type="video/mp4“></source>
</video>
</html>
Benutzeravatar
sparrow
User
Beiträge: 4195
Registriert: Freitag 17. April 2009, 10:28

Mit Allwissen hat das wenig zu tun.

Was zeigt denn der Browser in "Netzwerk"-Reiter an, wenn du F12 drückst und dann die Seite lädst, die auf der ads Video eingebettet ist?
Dort wird dir die URL angezeigt, die versucht wird zu laden.

Und du benutzt hier ja 2 mal "static" in einem Template.
Einmal funktioniert es - einmal funktioniert es nicht. Warum machst du es denn bei dem, wo es nicht funktioniert, nicht genau so wie bei dem Sylesheet? Da betinnt dein Pfad nicht mit einen '/'. Warum achst du das bei dem Video?
Pitwheazle
User
Beiträge: 873
Registriert: Sonntag 19. September 2021, 09:40

Ob das stylsheet funtioniert ist noch gar nicht raus - auf der Seite ist ja außer dem (nicht angezeigten) Video noch nichts.
Den Slash habe ich rausgenommen.
sparrow hat geschrieben: Sonntag 25. Februar 2024, 12:34 Was zeigt denn der Browser in "Netzwerk"-Reiter an, wenn du F12 drückst und dann die Seite lädst, die auf der ads Video eingebettet ist?
Tja, da müsste ich damit umgehen können. Ich habe nur "Netzwerkanalyse". Da wird das Document angezeigt, das stylsheet und das fehlende Favicon.ico ... aber keine Video URL.
Benutzeravatar
snafu
User
Beiträge: 6742
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Pitwheazle hat geschrieben: Sonntag 25. Februar 2024, 12:21 Oh ihr Allwissenden - habt Mitleid mit einem alten verwirrten Mann! Ich bekomme es nicht hin.
Du stellst dich aber auch extrem unbeholfen an. Dieses static ist einfach ein Platzhalter für ein oder mehrere Basispfade auf deinem System. Grob vergleichbar mit der Umgebungsvariable PATH für ausführbare Dateien. Welchen Sinn machen da denn bitte absolute Pfadangaben hinter dem static...?
Pitwheazle
User
Beiträge: 873
Registriert: Sonntag 19. September 2021, 09:40

snafu hat geschrieben: Sonntag 25. Februar 2024, 12:58 Du stellst dich aber auch extrem unbeholfen an.
Stimmt!
Also so:

Code: Alles auswählen

<source src="{% static 'Rechentrainerfilm.mp4' %}"  type="video/mp4“></source>
?
(Nein)
Benutzeravatar
snafu
User
Beiträge: 6742
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Pitwheazle hat geschrieben: Sonntag 25. Februar 2024, 12:46 Ob das stylsheet funtioniert ist noch gar nicht raus - auf der Seite ist ja außer dem (nicht angezeigten) Video noch nichts.
Du kennst aber schon den Speicherort deines Stylesheets, oder? Dafür musst du halt einen passenden übergeordneten Pfad angeben in der Konfiguration angeben. Also ein Pfad, der auch tatsächlich im Dateisystem zu den benötigten Dateien führt. Wenn man etwas wie "static/media" und "static/stylesheets" hat und bei STATIC_URL "static/" angibt, dann würde man das Video in seinem Template dementsprechend via "{% static 'media/video.mp4' %}" referenzieren. Wie gesagt immer unter der Voraussetzung, dass der Server unter der Angabe auch tatsächlich etwas findet. Möglicherweises willst du bei STATIC_URL auch eine absolute Pfadangabe hinschreiben.

Ein "ich lass den Slash jetzt einfach mal weg" klingt übrigens nicht gerade danach, dass du weißt, was du tust...
Benutzeravatar
snafu
User
Beiträge: 6742
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Pitwheazle hat geschrieben: Sonntag 25. Februar 2024, 13:03
snafu hat geschrieben: Sonntag 25. Februar 2024, 12:58 Du stellst dich aber auch extrem unbeholfen an.
Stimmt!
Also so:

Code: Alles auswählen

<source src="{% static 'Rechentrainerfilm.mp4' %}"  type="video/mp4“></source>
?
(Nein)
Wie soll man das als Außenstehender jetzt sinnvoll beantworten? Du solltest doch die Ordnerstruktur des Servers selber kennen. Wenn dem nicht so ist, dann wäre der Admin hierfür wohl der bessere Ansprechpartner.

BTW: Hast du eigentlich Punkt 1 im verlinkten HowTo beachtet?
Make sure that django.contrib.staticfiles is included in your INSTALLED_APPS.
Pitwheazle
User
Beiträge: 873
Registriert: Sonntag 19. September 2021, 09:40

snafu hat geschrieben: Sonntag 25. Februar 2024, 13:13 Du kennst aber schon den Speicherort deines Stylesheets, oder?
Möglicherweises willst du bei STATIC_URL auch eine absolute Pfadangabe hinschreiben.
Vielleicht ist das das Problem und ich weiß ihn nicht. Kann mir den jemand aus meinem Screenshot formulieren?
Das habe ich wieder mal nicht verstanden. Dazu:

Code: Alles auswählen

<source src="{% static 'medien/Rechentrainerfilm.mp4' %}"  type="video/mp4“></source>
schreibst du:
snafu hat geschrieben: Sonntag 25. Februar 2024, 12:58 Welchen Sinn machen da denn bitte absolute Pfadangaben hinter dem static...?
und hier:
snafu hat geschrieben: Sonntag 25. Februar 2024, 13:13 .. dann würde man das Video in seinem Template dementsprechend via "{% static 'media/video.mp4' %}" referenzieren.
Pitwheazle
User
Beiträge: 873
Registriert: Sonntag 19. September 2021, 09:40

snafu hat geschrieben: Sonntag 25. Februar 2024, 13:18 BTW: Hast du eigentlich Punkt 1 im verlinkten HowTo beachtet?
Make sure that django.contrib.staticfiles is included in your INSTALLED_APPS.
Ja, ist sie.
Ich will das Video ja zunächst mal lokal zum Laufen bringen und da bin ich leider auch der Administrator.
Der Film liegt in "...\rechentrainer.app\accounts\static\medien.Rechentrainerfilm.mp4"
Benutzeravatar
snafu
User
Beiträge: 6742
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Pitwheazle hat geschrieben: Sonntag 25. Februar 2024, 13:32 Der Film liegt in "...\rechentrainer.app\accounts\static\medien.Rechentrainerfilm.mp4"
Na, dann wäre STATIC_URL "...\rechentrainer.app\accounts\static\" und die Angabe im Template wäre:

Code: Alles auswählen

<source src="{% static 'medien/Rechentrainerfilm.mp4' %}"  type="video/mp4"></source>
(wie du ja zuletzt auch schon geschrieben hast)

Wenn dies nicht funktioniert, dann kann ich ohne weitere Infos leider auch nicht weiterhelfen.

EDIT:
Und in der Produktiv-Umgebung ist dann selbstverständlich eine Anpassung von STATIC_URL nötig, nicht jedoch im Template, sofern die Struktur der Unterverzeichnisse übernommen wird.

EDIT2:
Und denk dran, dass Windows-Pfadangaben doppelte Backslashes bzw. die Angabe als Raw-String benötigen, damit sie mit Python funktionieren.
Pitwheazle
User
Beiträge: 873
Registriert: Sonntag 19. September 2021, 09:40

snafu hat geschrieben: Sonntag 25. Februar 2024, 13:50 Wenn dies nicht funktioniert, dann kann ich ohne weitere Infos leider auch nicht weiterhelfen.
Das heißt also eigentlich müsste es funktionieren?
Hast du eine Idee, welche Infos weiterhelfen könnten?
Benutzeravatar
sparrow
User
Beiträge: 4195
Registriert: Freitag 17. April 2009, 10:28

1. Prüfen, wie die URL im Quelltext der Seite gerendert wird.
2. Prüfen, ob die URL, die gerendert wird, dem entspricht was du erwartest.
3. Falls ja: Prüfen was passiert, wenn man die URL aufruft.
4. Falls nicht wie erwartet eine normaler Status zurück kommt, muss es wohl in Django liegen. Also dort die Konfiguration prüfen.
Benutzeravatar
grubenfox
User
Beiträge: 432
Registriert: Freitag 2. Dezember 2022, 15:49

und der allererste Tip hier könnte auch hilfreich sein:
sparrow hat geschrieben: Samstag 24. Februar 2024, 18:11 Ich würde einfach in den anderen Templates schauen, in denen du Dateien aus Static verwendest.
Natürlich vorausgesetzt dass es in den anderen Templates schon richtig funktioniert...
Antworten