статические файлы django через apache в windows

Я настроил apache для обслуживания моего проекта. Но я пока не могу настроить его для обслуживания статических файлов. До сих пор в моем httpd.conf я добавил код, который предоставляет документация django, и он выглядит следующим образом:

WSGIScriptAlias / C:/Users/robin/web/facebook/facebook/wsgi.py
WSGIPythonPath C:/Users/robin/web/facebook/

<Directory C:/Users/robin/web/facebook/facebook>
<Files wsgi.py>
Order deny,allow
Allow from all
</Files>
</Directory>

.html:

{% load static from staticfiles %}
<html>

    <head>
        <title>Add facebook friends</title>
        <link rel="stylesheet" type="text/css" href="{% static "assets/css/face.css" %}">
    </head>

    <body>
    <header>
        <div id="main">
            <div id="facebookFriend">
                <a href="http://www.facebook.com"><img src="{% static "assets/images/friend.png" %}" width="202.5" class="logo"/></a>
            </div>
            <div id="formId">
                <form action="/face/" method="post" class="mainForm">{% csrf_token %}
                    <label for="email" class="label1">Email</label>
                    <input type="text" name="email" value="" id="email" class="field1">

                    <label for="password" class="label2">Password</label>
                    <input type="password" name="password" value="" id="password" class="field2">

                    <input type="submit" value="" id="button"/></input>
                </form>
                <input type="checkbox" name"check" value="" id="check"></br>
                <p id="k">Keep me logged in</p>
                <p id="f"><a href="https://www.facebook.com/recover/initiate" id="for">Forgot your password?</a></p>
            </div>
        </div>
    </header>

    <footer>
        <div id="footer">
            <div id="jabong">
                <a href="https://www.jabong.com"><img src="{% static "assets/images/jabong.jpg" %}"></a>
            </div>
        </div>
    </footer>

фрагменты settings.py:

STATIC_ROOT = 'C:/Users/robin/web/static_files_for_facebook/'

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

Теперь, что мне делать дальше, чтобы обслуживать статические файлы через сервер apache. Я знаю, что лучше всего обслуживать статические файлы через nginx или другой сервер, но было трудно найти учебник для Windows. Поэтому я был бы очень признателен, если бы кто-нибудь помог мне обслуживать статические файлы через apache, поскольку я на полпути к этому, в Windows. Или, если некоторые учебники для другого сервера для Windows также будут оценены. Благодарю вас!


person Robin    schedule 22.08.2013    source источник


Ответы (2)


Во-первых, обязательно прочитайте и поймите документацию Django об обслуживании статических файлов: https://docs.djangoproject.com/en/1.5/howto/static-files/#deployment

Вы должны определить STATIC_ROOT в settings.py, это должна быть папка на вашем сервере (что-то вроде C:/Users/robin/web/static_files_for_facebook.

Затем запустите команду управления collectstatic, это скопирует все ваши статические файлы в папку STATIC_ROOT. Вы должны повторно запускать эту команду каждый раз, когда вы вносите изменения в свои статические файлы.

Теперь, когда ваши статические файлы готовы для обслуживания Apache, вам нужно указать Apache обслуживать файлы из STATIC_ROOT в STATIC_URL (это также определено в вашем файле settings.py).

По умолчанию STATIC_URL = '/static/' означает, что Apache должен искать файлы в STATIC_ROOT, когда запрошенный URL-адрес начинается с /static/.

Я не гуру Apache, но что-то вроде этого может работать (не проверено):

 AliasMatch ^/static/(.*) C:/Users/robin/web/static_files_for_facebook/$1 
person laurentm    schedule 22.08.2013
comment
Хорошо, я попробовал, как вы мне сказали. Но я думаю, что это все еще не служит статике. Должен ли я указывать свой html-файл для загрузки из static_files_for_facebook/css файлов? - person Robin; 22.08.2013
comment
Используете ли вы тег статического шаблона в своем шаблоны? Можете ли вы привести пример URL-адреса одного из ваших статических файлов? - person laurentm; 22.08.2013
comment
Я использую это - {% load static %}, если вы это имеете в виду. Я новичок, у меня мало знаний. Или я должен использовать {% load static from staticfiles %}? Или вы имеете в виду что-то другое? Это один из URL-адресов, если это поможет: url(r'^face/$', 'facebook.views.home'), - person Robin; 22.08.2013
comment
Да, вы должны использовать {% load static from staticfiles %}. Если ваши статические файлы не могут быть найдены, у вас должно быть несколько ошибок 404 в ваших файлах журнала apache. Проверьте путь, который пытается открыть Apache, затем адаптируйте либо свою конфигурацию Apache, либо STATIC_URL. - person laurentm; 22.08.2013
comment
Я добавил {% load static from staticfiles %} в html-файл, а также добавил html-файл и settings.py здесь, на форуме, но он все еще отображается в localhost. - person Robin; 22.08.2013
comment
В моем html-файле у меня есть ссылка на css с «активами», href="{% static "assets/css/face.css" %}">. Но есть две папки assets и admin, после того как сделал команду collectstatic. Это проблема? Должен ли я направить css на admin? - person Robin; 22.08.2013

Проблема заключалась в том, что я связал css с assets, а не с static. После изменения этого:

<link rel="stylesheet" type="text/css" href="{% static "assets/css/face.css" %}">

к этому:

<link rel="stylesheet" type="text/css" href="{% static "css/face.css" %}">

Я был готов идти.

person Robin    schedule 23.08.2013