从nginx

时间:2017-02-04 15:53:56

标签: python django nginx

当前问题的突破:

我用django创建了一个网站,正在提供正确上传到管理员中的媒体文件(我认为是这样),因为它们一旦上传就出现在各自的页面上。但是,在一些新站点修复后,这些文件停止显示,并且不会显示图像和音频。

要托管我的网站,我使用的是Digital Ocean。

如果我将MEDIA_URL设置为' / media /'它不断被添加到STATIC URL之前,并且URL看起来像" www.site.com/media/static/Images/etc',然后没有任何正常工作。

在我的模型中,对于ImageField(),我将upload_to设置为

photo = models.ImageField(upload_to="photos/")

我的网址:

urlpatterns = [
    url(r'^' + ADMIN + '/', admin.site.urls),
    url(r'^', include('a.urls')),
    url(r'^', include('b.urls')),
    url(r'^', include('c.urls')),
    #for static files
] #+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

这会在我的媒体文件夹中创建一个文件夹,该文件夹位于我的django应用程序所在的根目录中。

我在文档中读到了,但在上传媒体文件时,我仍然不清楚如何处理我的媒体文件。我知道正确的方法是使用像nginx这样的服务器来提供服务。

我想知道为什么我的媒体文件最初没有显示,如果我应该使用nginx将会发现媒体文件夹中的文件无法找到,这会影响nginx显示文件的方式,和 为什么媒体网址会被放在前面?

我会做nginx配置,但是如果你想展示一个例子,请做。

谢谢!

我在Settings.py中的相应网址

STATIC_URL = '/static/'
STATIC_ROOT = '/home/path/to/project/static'
MEDIA_URL = '/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

1 个答案:

答案 0 :(得分:0)

我想出了如何让我的文件显示在我的制作网站上,但它涉及一些小问题。由于我知道正在收集和显示已存在于静态文件夹中的文件,因此我所要做的就是将用户文件放在静态文件夹中。

所以我这样做了:

STATICFILES_DIRS = (
    #os.path.join(PROJECT_ROOT),
    'media',
)

现在,collectstatic进入该文件夹并获取上传的媒体文件。唯一的问题是,每次上传文件时,我都要运行collectstatic,因此这是一个临时修复。如果您知道如何在每次上传文件时自动运行collectstatic,请在下面评论。

我只是想我会分享这个,以防万一有人遇到同样的问题而想要临时修复。