Django: CSS Не работает

Я все еще новичок в django, и у меня проблемы с работой CSS.
Я следил за направлением по ссылке: учебник по Django Static Link, по обработке статических файлов. Но он все еще не работает.

Настройки

# Absolute path to the directory static files should be collected to.
# Don't put anything in this directory yourself; store your static files
# in apps' "static/" subdirectories and in STATICFILES_DIRS.
# Example: "/home/media/media.lawrence.com/static/"
STATIC_ROOT = '/Users/a9austin/Development/sites/AlphaSocks/src/static_root/'

# URL prefix for static files.
# Example: "http://media.lawrence.com/static/"
STATIC_URL = '/static/'

# Additional locations of static files
STATICFILES_DIRS = (
# Put strings here, like "/home/html/static" or "C:/www/django/static".
# Always use forward slashes, even on Windows.
# Don't forget to use absolute paths, not relative paths.
'/Users/a9austin/Development/sites/AlphaSocks/src/staticfiles'

)

Вид

#from django.http import HttpResponse
from django.shortcuts import render_to_response


def index(request):
return render_to_response('index.html')


index.html

<link rel="stylesheet" href="{{STATIC_URL}}css/style.css" type="text/css" media="screen" >

И организация каталогов

src- > staticfiles- > css- > style.css



Большое вам спасибо, ваша помощь и время очень ценятся!

Ответ 1

Чтобы Django обслуживал статические файлы, вы должны убедиться, что у вас есть пара настроек.

STATIC_URL

Этот параметр указывает, на какой URL должны отображаться статические файлы. Вы уже сделали это.

STATICFILES_DIRS

Это указывает на все папки в вашей системе, где Django должен искать статические файлы. Идея состоит в том, что в вашем проекте может быть несколько приложений, и каждому приложению может потребоваться различный набор статических файлов. Таким образом, в организационных целях каждое приложение может содержать static каталог, в котором будут храниться только статические файлы. Итак, у Джанго должен быть способ узнать, где находятся эти каталоги. Вот для чего этот параметр.

STATIC_ROOT

Этот параметр указывает, куда Django будет копировать все статические файлы, а не где статические файлы уже находятся. Идея состоит в том, что после того, как вы оставите разработку в производстве, Django больше не сможет обслуживать статические файлы из-за проблем, которые я здесь не расскажу (об этом в статье). Однако для производства все статические файлы должны находиться в одном каталоге, а не во многих, как указано в STATICFILES_DIRS. Таким образом, этот параметр указывает каталог, в который Django будет копировать все статические файлы из всех файлов в STATICFILES_DIRS, выполнив следующую команду:

$ python manage.py collectstatic

Обратите внимание, что это необходимо только после STATICFILES_DIRS а также что указанный здесь каталог не может совпадать с любым каталогом, указанным в STATICFILES_DIRS.

Urls.py

При разработке Django для обслуживания ваших статических файлов вы должны включить статические URL в ваш urls.py:

from django.contrib.staticfiles.urls import staticfiles_urlpatterns

urlpatterns = ...

urlpatterns += staticfiles_urlpatterns()

После того, как вы выполните все вышеперечисленные действия, ваши статические файлы должны быть обработаны, пока у вас есть DEBUG = True. Похоже, что из вышеприведенного списка вы завершили только STATIC_URL. Также обратите внимание, что все шаги, которые я описал выше, находятся в документах, которые вы указали в своем вопросе (ссылка). Это может быть немного запутанным в начале, но если вы прочитаете это пару раз, это станет яснее.

Ответ 2

Добавление RequestContext к ответу должно загружать переменную STATIC_URL в шаблон.

Попробуйте изменить:

from django.shortcuts import render_to_response

def index(request):
    return render_to_response('index.html')

в

from django.shortcuts import render_to_response
from django.template.context import RequestContext

def index(request):
    return render_to_response("index.html", context_instance=RequestContext(request)) 

Подробнее см. документацию Django на Ссылаясь на статические файлы в шаблонах.

Ответ 3

There is an easy way if you feel that your CSS isn't working.If your project isn't way too huge then you can just make the CSS file in the same file as the HTML.And then run it.That way it will run for example

'

<head>
  <meta charset="UTF-8">
  <title>Promantus Bot</title>
      <style type="text/css"> 
* {
    margin: 0;
    padding: 0;
}

body {
    background-color:#FF625F;
}

h1, p {
    font-family: sans-serif;
    text-align: center;
    color: #323330;
    font-size:  100px;
}


p {
    font-size: 30px;
}

#output, #container {
    display: flex;
    justify-content: center;
    margin-top: 100px;
}


input {
    background-color: #eee;
    border: none;
    font-family: sans-serif;
    color: #000;
    padding: 15px 32px;
    text-align: center;
    text-decoration: none;
    display: inline-block;
    font-size: 30px;
}






</style>


</head>

<body>

  <div id="output"></div>

<div id="container">
    <input type="text" id="input" value="">
</div>





</body>

</html>
'
It going to run fine this way.