2012-01-17 36 views
1

最近我一直在为我的网站添加一个负载的功能。为了让这个过程更快,我想把我的开发机器上的静态文件提供给我。具体来说,我想使用DJango v1.3.1附带的内置开发服务器;修改生产服务器是一个坏主意,每次修改时都必须上传静态文件,这浪费了大量的时间和精力。为什么STATIC_URL不能以'http://'或'/'作为DJango开发服务器?

让开发者发挥球,但一直是一个噩梦!我刚刚浪费了大约4个小时来尝试提供静态数据,结果发现我错误的是,开发服务器在STATIC_URL开始时似乎不喜欢'/'?我想知道为什么和/或我在做什么错...

我一直在尝试使用the settings suggested in the docs,但是我错误地阅读了一些东西,或者还有更多。

我的项目是这样的:

<project root> 
    /app1 
     ..various files.. 
    /app2 
     ..various files.. 
    /static 
     /style 
      Style.css 
    /templates 
manage.py 
settings.py 
settings_dev.py 
settings_production.py 
urls.py 

settings.py检测我们正在运行的服务器,然后调用相应settings_dev.pysettings_production.py效果很好,我的所有设置,做工精细的生产服务器上。

settings_dev.py有以下几点:

DEBUG = True 

ADMINS = (
    ('Jon', '[email protected]'), 
) 

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.mysql', 
     'NAME': 'mydb', 
     'USER': 'dbuser', 
     'PASSWORD': 'dbpassword', 
     'HOST': '', 
     'PORT': '', 
    } 
} 

MEDIA_ROOT = '' 
MEDIA_URL = '/media' 
STATIC_ROOT = 'C:/Users/jon/PycharmProjects/myproject/static' 
STATIC_URL = 'http://192.168.1.4/static' 
STATICFILES_DIRS =() 
ADMIN_MEDIA_PREFIX = 'http://192.168.1.4/static/admin/' 
TEMPLATE_DIRS = ('C:/Users/jon/PycharmProjects/myproject/templates',) 

IS_PRODUCTION_SERVER=False 

..和urls.py包括以下内容:

这工作这么多我的模板拿起静态URL,给我(对示例)http://192.168.1.4/static/style/Style.css但是如果我将STATIC_URL更改为/static

...然后访问http://192.168.1.4/static/style/Style.css我得到一个404错误:

'\style\Style.css' could not be found 

那么这是怎么回事?

+0

发现这是你的dev的服务器确实在运行'http:// 192.168.1.4',而不是'http://192.168.1.4:8000'? – 2012-01-17 09:25:20

回答

0

有一些特殊的助手路由的URL静态文件

from django.conf.urls.static import static 
from django.contrib.staticfiles.urls import staticfiles_urlpatterns 

if settings.IS_PRODUCTION_SERVER is False: 
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 
    urlpatterns += staticfiles_urlpatterns() 

而且,我从来没有检查源代码,看它是否重要,但在原来的settings.py STATIC_ROOT,STATIC_URL所有的例子,MEDIA_URL和MEDIA_ROOT以/结尾,您可以尝试一下。

如果你在气馁,太多的Django的启动项目,在那里我忘记设置的东西我做了一个通用的多用途的Django基地项目之后,你可以在https://github.com/riquito/Semiautomatic-django-setup

相关问题