我正在尝试通过django教程,但是已经挂断了显示与admin模块关联的css。我正在使用django 1.6,apache和MySQL
在windows上工作我目前的等级如下:
MySite
|
|---static
| |--admin
| |--css
| |--img
| |--js
|---MyApp
| |--__init__.py
| |--admin.py
| |--models.py
| |--tests.py
| |--views.py
|---MySite
| |--__init.py
| |--settings.py
| |--testdb.py
| |--urls.py
| |--wsgi.py
|--manage.py
在settings.py文件中我已将STATIC_URL定义为
STATIC_URL = '/MySite/static/'
当我检查生成的管理页面时,它显示它正在MySite / static / admin / css中查找css,这就是它所在的位置,但它没有在那里找到它。看来根本不正确。
在我的urls.py中我有
admin.autodiscover()
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
)
修改
我的Apache htttpd.conf文件完全不受XAMPP最初安装的影响,除非我在适当的位置包含了* LoadModule wsgi_module modules / mod_wsgi.so *,并附加了
WSGIScriptAlias /MySite F:/Web_Django/MySite/MySite/wsgi.py
WSGIPythonPath F:/Web_Django/MySite
<Directory F:/Web_Django/MySite/MySite/>
<Files wsgi.py>
Order deny,allow
Allow from all
</Files>
</Directory>
我已将整个文件包含在http://pastebin.com/AD77f69c
中EDIT2:
我发现在使用apache时你需要稍微改变一下wsgi.py文件。我现在有以下内容,但问题仍然存在。
import os
import sys
path = 'f:/web_django/Nutana/'
if path not in sys.path:
sys.path.append(path)
os.environ['DJANGO_SETTINGS_MODULE'] = 'Nutana.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
用于apache的modwsgi适配器的开发人员Graham Dumpleton提供了一个备用的wsgi文件,他(以及其他许多人,显然)认为在旧的博客文章(http://tinyurl.com/y8wr7gc)中效果更好,但它没有为我工作。
答案 0 :(得分:1)
修改强>
当然,至少在本地更好地在项目本身内进行项目自定义。这预计使用collectstatic准备将网站从我的开发机器上移开。按照@LGama的建议,我已将其移至项目中并更新了别名,如下所示。
f:\django_web/
|---MySite
|---static/
| |---admin/
| |--css
| |--img
| |--js
|---MyApp/
| |--__init__.py
| |--admin.py
| |--models.py
| |--tests.py
| |--views.py
|---MySite/
| |--__init.py
| |--settings.py
| |--testdb.py
| |--urls.py
|---Apache/
| |--wsgi.py
|--manage.py
我的httpd配置包括:
Alias /static "F:/Web_Django/MySite/static/"
<Directory "F:/Web_Django/MySite/static/">
Order allow,deny
Options Indexes
Allow from all
IndexOptions FancyIndexing
</Directory>
WSGIScriptAlias /MySite F:/Web_Django/MySite/Apache/wsgi.py
WSGIPythonPath F:/Web_Django/MySite
<Directory F:/Web_Django/MySite/Apache/>
Order deny,allow
Allow from all
</Directory>
一切正常!
答案 1 :(得分:1)
只是为了澄清你的答案:你可以将你的文件保存在项目中(用于开发目的),当你需要部署时,你可以使用命令
django-admin.py collectstatic¶
在settings.py&gt;中描述的目录中收集您的文件STATIC_ROOT
其中一个优点是你可以正常使用你的JS和CSS,当它的部署时间你可以使用像压缩(http://django-compressor.readthedocs.org/en/latest/)之类的扩展来缩小并将缩小的发送到静态根(可以在CDN)。
进一步阅读:https://docs.djangoproject.com/en/dev/ref/contrib/staticfiles/
修改强>
在Nginx中你会使用
location /myuser/static/ { # STATIC_URL
alias /home/myuser/projects/src/MyProject/static/; # STATIC_ROOT
}
定义STATIC_ROOT的别名。
然后,服务器将知道在哪里查找使用Collect_static创建的文件。
我认为与您相关的是您的服务器不知道在项目中找到文件的位置。使用项目内部服务的文件的其他问题是您失去了模块化。你不能在你的项目中有不同的静态目录(每个模块一个),而不必在你的服务器中创建更多的别名(更杂乱)。
顺便说一句,dev服务器不会发生这种情况。它找到你的文件而无需配置。