Я почти преодолением закончить мой Theme Selector
с Django
но я блокировании на одной точке:Handle динамический staticfiles путь с Django
==> Я не прийти, чтобы получить динамический staticfiles путь в соответствии с результат формы, заданный пользователем.
поясню процесс:
Пользователь заполняет форму Django, проверяя коробку RadioSelect. У него есть выбор между двумя вариантами:
- Datasystems
- Cameroun
Оба варианта соответствуют 2 темам, которые имеют два Differents фона цвета. Datasystems - голубой & белый и Cameroun зеленый & красный.
Итак, я поднимаю результат формы, соответствующий одной из оба темы, которые расположены в статических файлах:
|--- 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
В моем settings.py файла, у меня есть статический путь:
STATIC_URL = '/static/'
STATICFILES_DIRS = (os.path.join(BASE_DIR, "/Etat_civil/static/Theme/"),)
Я использую templates_tag, но я не уверен, что если моя функция может быть написать так:
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()
В моих шаблонах, я хотел бы написать статический путь, динамический путь зависит от переменной темы, выбранной пользователем:
<!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 ....
Я немного потерял. Я думаю, что мой процесс может работать очень хорошо, но, возможно, что-то не написано как пифонический или что-то еще.
Я старался быть кратким и конкретным.
Спасибо авансом
У меня очень плохой стиль CSS. Это означает, что мой файл template.html не видит правильный путь staticfiles. Возможно ли, что функция GetTheme в файле template_tags неверна? – Deadpool
Ну, да; этот код не имеет особого смысла и возвращает логическое значение (которое всегда верно, поскольку тема, которую вы только что получили, всегда будет находиться в Theme.objects.all()). Что именно вы пытаетесь сделать там? –
Хорошо. У меня есть таблица, которая называется 'Тема' с двумя компонентами:' id', 'favorite_theme'. Каждый раз, когда я заполняю тему, я добавляю строку в эту таблицу (прямо сейчас). Поэтому, чтобы получить выбранную тему, я собираю последнюю строку в таблице. В этой строке я извлекаю 'favorite_theme', который является' Datasystems' или 'Cameroun', и эта переменная должна находиться в моем статическом пути. – Deadpool