django静态文件通过windows中的apache

时间:2013-08-22 15:05:40

标签: django apache django-staticfiles django-static

我已配置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>

snippets 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的一半。或者,如果其他服务器的窗口的一些教程也将受到赞赏。谢谢!

2 个答案:

答案 0 :(得分:1)

首先,请务必阅读并理解有关提供静态文件的Django文档:https://docs.djangoproject.com/en/1.5/howto/static-files/#deployment

您必须在settings.py中定义STATIC_ROOT,这必须是您服务器上的文件夹(类似C:/Users/robin/web/static_files_for_facebook

然后运行collectstatic管理命令,这将复制STATIC_ROOT文件夹中的所有静态文件。每次更改静态文件时都必须重新运行此命令。

现在,您的静态文件已准备好由Apache提供,您需要告诉Apache提供来自STATIC_ROOT STATIC_URL的文件(也在您的settings.py中定义)。< / p>

默认情况下STATIC_URL = '/static/'表示当请求的网址以STATIC_ROOT开头时,Apache应该在/static/中查找文件。

我不是Apache大师,但这样的事情可能有用(未经测试):

 AliasMatch ^/static/(.*) C:/Users/robin/web/static_files_for_facebook/$1 

答案 1 :(得分:0)

问题是因为我从assets而不是static链接了css。改变之后:

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

到此:

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

我很高兴。