2013-02-18 199 views
0

就像关于Django 1.3的第10亿个静态文件问题一样。我一直在寻找和尝试这么多事情,但似乎没有任何工作适合我。任何帮助,将不胜感激。将尝试尽可能多地提供信息。Django 1.3静态文件

的URL文件

urlpatterns = patterns('', 
url(r'^projectm/statictest/$','project_management.views.statictest'),) 

VIEW

def statictest(request): 
return render_to_response('statictest.html',locals()) 

模板

<html><head><title>Static Load Test Page</title></head> 
<body> 
{% load static %} 
<img src="{{ STATIC_URL }}testimage.jpg" /> 
</body></html> 

设置

STATIC_ROOT = '/home/baz/framework/mysite/static/' 
STATIC_URL = '/static/' 
STATICFILES_DIRS = ('',) 
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder', 
'django.contrib.staticfiles.finders.AppDirectoriesFinder', 
) 
TEMPLATE_DIRS = (
"/home/baz/framework/mysite/templates" 

文件

-bash-3.2$ pwd 
/home/baz/framework/mysite/templates 
statictest.html 

-bash-3.2$ pwd 
/home/baz/framework/mysite/project_management/static 
-bash-3.2$ ls 
testimage.jpg 

不太确定是否有其他任何有用的信息。但基本上,当我去这个测试页面,并检查页面源,网址指向

<img src="/static/testimage.jpg" /> 

但图像无法加载。我也尝试过在多个浏览器上使用。也许我在某个地方错过了一个简短的陈述?

欢呼的帮助

回答

0

您使用的是内置的runserver命令或你所服务的Django应用程序的一些其他的方式?

如果你使用runserver那么你的问题是你不告诉Django在哪里可以在文件系统中找到你的静态资产。您需要将STATIC_ROOT设置为您的静态资产可以找到的文件系统路径。尝试将其设置为:/home/baz/framework/mysite/project_management/static/

如果您使用的是不同的服务器(例如Nginx背后的gunicorn),那么前端服务器有责任拦截/static/的请求并为您提供服务。

+0

STATIC_ROOT是其中的runserver查找文件服务(只适用于当DEBUG = TRUE)。这也是Django在collectstatic过程中复制静态文件的地方。 collectstatic命令默认在每个应用程序的/ static /中查找静态文件,以及STATICFILES_DIRS中列出的任何目录中的静态文件。 – 2013-02-18 02:03:53

+0

是的,我正在使用内置的runserver。 – dlyxzen 2013-02-18 03:25:46

0

还记得在设置'STATIC_ROOT'后运行'collectstatic'管理命令。

https://docs.djangoproject.com/en/1.4/howto/static-files/#deploying-static-files-in-a-nutshell

+0

嗨,好吧,我更新了我的配置文件中的STATIC_ROOT设置。执行python manage.py collectstatic。我可以看到它已经从我的应用程序静态文件夹收集了testimage,但是当我刷新页面时,图像仍然无法加载,路径仅仅是imgsrc ='testimage.jpg'。 – dlyxzen 2013-02-18 03:24:07

+0

由于您正在使用内置的runserver测试此功能,因此您需要稍微调整一下urls.py,[请参阅此处](https://docs.djangoproject.com/en/1.4/howto/static-文件/#服务,静态文件正在开发)。现在,一旦完成并且服务器正在运行,请尝试直接通过访问“http:// your-url/static/testimage.jpg”来访问该映像 - 如果工作正常但模板仍在输出“src ='testimage .jpg'“而不是”src ='/ static/testimage.jpg'“,那么当模板呈现时你没有使用RequestContext,[见这里](http://stackoverflow.com/a/11684482/1428653) 。 – Matt 2013-02-18 05:40:38

+0

我在想这可能与权限有关,所以我尝试chmodding静态目录到777,但无济于事。 – dlyxzen 2013-02-18 05:40:45