Как позволить пользователю переключаться между цветовыми темами в Django

Итак, я работаю над сайтом на Django и хочу, чтобы посетители сайта могли нажать на нужную им тему. Я смог сделать это с помощью чистого Html/css и Javascipt, но теперь, когда я перенес все в Django, это не работает. Я думаю, может быть, это моя установка пути. Вот код в моем index.html

<h5 style="text-align: center;line-height: 0;">Personalize Theme</h5>

                {% load static %}
                <script type="text/javascript" src="../../static/pythonicThinking/script.js"></script>
                <div id="theme-options-wrapper">
                    <div data-mode="light" id="light-mode" class="theme-dot" ></div>
                    <div data-mode="blue" id="blue-mode" class="theme-dot"></div>
                    <div data-mode="green" id="green-mode" class="theme-dot"></div>
                    <div data-mode="purple" id="purple-mode" class="theme-dot"></div>
                </div>

                <p id="settings-note">*Theme settings will be saved for<br>your next visit</p>
            </div>

файл javacript

console.log('Its working')

let theme = localStorage.getItem('theme')

if(theme == null){
setTheme('light')
}else{
setTheme(theme)
}

let themeDots = document.getElementsByClassName('theme-dot')


for (var i=0; themeDots.length > i; i++){
themeDots[i].addEventListener('click', function(){
    let mode = this.dataset.mode
    console.log('Option clicked:', mode)
    setTheme(mode)
})
}

function setTheme(mode){
if(mode == 'light'){
    document.getElementById('theme-style').href = 'default.css'
}

if(mode == 'blue'){
    document.getElementById('theme-style').href = 'blue.css'
}

if(mode == 'green'){
    document.getElementById('theme-style').href = 'green.css'
}

if(mode == 'purple'){
    document.getElementById('theme-style').href = 'purple.css'
}

localStorage.setItem('theme', mode)
}

файл setting.py

# Static files (CSS, JavaScript, Images)


STATIC_URL = '/static/'
MEDIA_URL = '/media/'


MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)

файл urls.py from django.views.generic import RedirectView

urlpatterns = [
path('admin/', admin.site.urls),
path('pythonicthinking/', include('pythonicthinking.urls')),
]
urlpatterns += [
path('', RedirectView.as_view(url='pythonicthinking/', permanent=True)),
]

urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

файл views.py from django.shortcuts import render

def home(request):
return render(request, 'pythonicthinking/index.html')

Мой defualt css работает, но когда я пытаюсь нажать на кнопки, чтобы изменить, я получаю эту ошибку

Refused to apply style from 'http://127.0.0.1:8000/pythonicthinking/purple.css' because its 
MIME type ('text/html') is not a supported stylesheet MIME type, and strict MIME checking is 
enabled

Я понял вашу проблему.

1-е: url статического файла недействителен. Вы должны увидеть 404 в консоли. 2. Рекомендуется отрисовывать определенную тему вместо того, чтобы применять ее на стороне клиента. Это может быть сделано с помощью куки сессии.

  1. Создание настраиваемых таблиц стилей и их рендеринг на сервере в зависимости от темы
Вернуться на верх