Ich Überwindung fast meinen Theme Selector
mit Django
zu beenden, aber ich bin Blockierung in einem Punkt:Griff dynamischen Static Pfad mit Django
==> Ich komme nicht einen dynamischen Pfad Static zu bekommen nach dem Formularergebnis vom Benutzer angegeben.
werde ich den Prozess erklären:
Benutzer füllt ein Django Formular ein RadioSelect Box durch Überprüfung. Er hat die Wahl zwischen zwei Möglichkeiten:
- Datasystems
- Cameroun
Beide Optionen zu 2 Themen entsprechen, die zwei differents Hintergrund-Farben haben. Datasystems ist blau & weiß und Kamerun ist grün & rot.
Also, ich das Formular Ergebnis sowohl Thema zu einem entsprechenden aufzunehmen, die in statischen Dateien befinden:
|--- app1
|--- app2
├── static
│ └── Theme
│ ├── Cameroun
│ │ ├── css
│ │ │ ├── Base.css
│ │ │ ├── Base_Accueil.css
│ │ │ ├── Base_Birthcertificate.css
│ │ │ ├── Base_Configurations.css
│ │ │ ├── Base_Identity.css
│ │ │ ├── Base_Mairie.css
│ │ │ ├── Base_Recensement.css
│ │ │ └── Base_Table.css
│ │ └── images
│ │ ├── admin.png
│ │ ├── chantier.jpeg
│ │ ├── chantier.png
│ │ ├── employe?\201.png
│ │ ├── logo.png
│ │ ├── maire.png
│ │ ├── officier.png
│ │ ├── stats.jpeg
│ │ └── visiteur.png
│ └── Datasystems
│ ├── css
│ │ ├── Base.css
│ │ ├── Base_Accueil.css
│ │ ├── Base_Birthcertificate.css
│ │ ├── Base_Configurations.css
│ │ ├── Base_Identity.css
│ │ ├── Base_Mairie.css
│ │ ├── Base_Recensement.css
│ │ └── Base_Table.css
│ └── images
│ ├── admin.png
│ ├── chantier.jpeg
│ ├── chantier.png
│ ├── employe?\201.png
│ ├── logo.png
│ ├── maire.png
│ ├── officier.png
│ ├── stats.jpeg
│ └── visiteur.png
In meiner settings.py Datei, ich habe die statischen Pfad wie folgt aus:
STATIC_URL = '/static/'
STATICFILES_DIRS = (os.path.join(BASE_DIR, "/Etat_civil/static/Theme/"),)
ich verwende templates_tag aber ich bin nicht sicher, ob meine Funktion so schreiben könnte:
from django import template
from Configurations.models import Theme
register = template.Library()
def GetTheme(Theme):
mytheme = Theme.objects.all().last()
return mytheme in Theme.objects.all()
In meinen Vorlagen, würde Ich mag statischen Pfad schreiben, wie ein dynamischer Pfad auf variable Thema durch den Benutzer ausgewählt wird, hängt:
<!DOCTYPE html>
<html>
<head>
{% load staticfiles %}
{% load user_tags %}
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
{% if mytheme == 'Datasystems' %}
<link rel="stylesheet" type="text/css" href="{% static 'Datasystems/css/Base_Accueil.css' %}"/>
{% elif mytheme == 'Cameroun' %}
<link rel="stylesheet" type="text/css" href="{% static 'Cameroun/css/Base_Accueil.css' %}"/>
{% endif %}
etc ....
Ich bin ein bisschen verloren. Ich denke, dass mein Prozess ziemlich gut funktionieren könnte, aber vielleicht ist etwas nicht als pythonischer Weg oder etwas anderes geschrieben.
Ich versuchte, präzise und spezifisch zu sein.
Danke von vorab
Ich bekomme eine sehr schlechte CSS-Stylesheet. Dies bedeutet, dass meine Datei template.html den korrekten Pfad für statische Dateien nicht anzeigt. Ist es möglich, dass die GetTheme-Funktion in der Datei template_tags falsch ist? – Deadpool
Nun, ja; dieser Code macht überhaupt keinen Sinn und gibt einen booleschen Wert zurück (was immer wahr ist, da das Thema, das Sie gerade abgerufen haben, immer in Theme.objects.all() enthalten ist). Was genau versuchst du da zu machen? –
Ok. Ich habe eine Tabelle namens 'Theme' mit zwei Komponenten:' id', 'favorite_theme'. Jedes Mal, wenn ich das Theme-Formular ausfülle, füge ich eine Zeile in diese Tabelle ein (bis jetzt). Um das gewählte Thema zu bekommen, nehme ich die letzte Reihe in der Tabelle auf. In dieser Zeile extrahiere ich 'favorite_theme', was' Datasystems' oder 'Kamerun' ist und diese Variable muss in meinem statischen Dateipfad liegen. – Deadpool