2014-03-25 75 views
0

我有一个简单的Django管理页面,可以将图像上传到产品说明。一切工作,直到我试图通过点击产品信息中的路径来查看图像。我得到这个错误:查看上传到Django的图像Admin

Page not found (404) 
Request URL: http://0.0.0.0:6666/the_image.jpg 

我猜我需要在urls.py中声明一些东西,但我不知道从哪里开始。我也试着改变settings.py我的媒体文件的路径,但如果我更改为 '/'

model.py

class Image(models.Model): 
    product_image = models.ForeignKey(Product) 
    image = models.ImageField(upload_to='/') 

settings.py

MEDIA_ROOT = '/' 
MEDIA_URL = '/' 

任何其他我总是错误admin.py

class InlineImage(admin.TabularInline): 
    model = Image 

class ProductAdmin(admin.ModelAdmin): 
    inlines = [InlineImage] 
+0

你只是使用的Django开发服务器?你有urls.py安装程序来提供静态文件吗? –

+0

我想我使用的是开发服务器...“manage.py runserver 0.0.0.0:6666”是我用它来启动它。而且,不,我不会,现在我会研究这个。 – AllTheTime

+0

查看https://docs.djangoproject.com/en/dev/ref/settings/#static-files 和https://docs.djangoproject.com/en/dev/ref/contrib/staticfiles/# module-django.contrib.staticfiles –

回答

1

文档是在这里https://docs.djangoproject.com/en/dev/ref/settings/#media-root

您需要设置MEDIA_ROOT和MEDIA_URL在你的设置文件中像这样

MEDIA_ROOT = /var/www/example.com/media/ 
MEDIA_URL = /media 

和你upload_to大概应该是型号名称或东西来标识它。

image = models.ImageField(upload_to='image') 

然后该链接应指向的/media/image/NAME_OF_IMAGE.png

您还需要有urls.py设置到服务器的媒体文件。对于生产你想在nginx中做一个别名。见https://docs.djangoproject.com/en/dev/howto/static-files/#serving-files-uploaded-by-a-user-during-development

它说:

from django.conf import settings 
from django.conf.urls.static import static 

urlpatterns = patterns('', 
    # ... the rest of your URLconf goes here ... 
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 
+0

非常感谢您的帮助!我刚刚完成了Django教程。超越它有很多微小的细节可以得到正确的结果,它可能有点压倒性。另外,如果你不介意,一旦将我的应用程序移动到实际的服务器上,这种设置会如何改变? – AllTheTime

+0

我会推荐uwsgi和nginx。 uwsgi可能有点压倒性,但与它合作非常好。这里有一个教程http://uwsgi-docs.readthedocs.org/en/latest/tutorials/Django_and_nginx.html,示例nginx config具有媒体和静态的别名 –