Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 找不到页面404 Django媒体文件_Python_Django_Http Status Code 404_Django Settings_Django Media - Fatal编程技术网

Python 找不到页面404 Django媒体文件

Python 找不到页面404 Django媒体文件,python,django,http-status-code-404,django-settings,django-media,Python,Django,Http Status Code 404,Django Settings,Django Media,我可以将文件上载到我在settings.py中设置的媒体文件夹('/peaceroot/www/media/'),如下所示 MEDIA_ROOT = '/peaceroot/www/media/' MEDIA_URL = '/media/' 但通过管理员我试图访问上传的图像文件 然后我得到404错误 该文件位于peaceroot/www/media/items/1a39246c-4160-4cb2-a842-12a1ffd72b3b.jpg在项目url模式中添加媒体url条目: from d

我可以将文件上载到我在
settings.py
中设置的媒体文件夹(
'/peaceroot/www/media/'
),如下所示

MEDIA_ROOT = '/peaceroot/www/media/'
MEDIA_URL = '/media/'
但通过管理员我试图访问上传的图像文件

然后我得到404错误


该文件位于peaceroot/www/media/items/1a39246c-4160-4cb2-a842-12a1ffd72b3b.jpg

在项目url模式中添加媒体url条目:

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

...
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

媒体根更好的方式是

当您改变项目时,尝试使媒体路径动态化将很容易

设置.py

BASE_DIR = os.path.dirname(os.path.dirname(__file__))


MEDIA_ROOT = os.path.join(BASE_DIR, 'media').replace('\\', '/')
MEDIA_URL = '/media/'
STATICFILES_DIRS = (
     os.path.join(BASE_DIR, 'static'),
)
url.py

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

urlpatterns = [
    # ... the rest of your URLconf goes here ...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
看看这个


补充一点:如果其他答案对您不起作用,请尝试将静态url放在其他url之前。像这样:

urlpatterns = static(...) + [...]
可能发生的情况是,列表中的一些模式会阻止请求到达静态处理程序。因此,首先使用静态处理程序可以解决这个问题。为我工作

在我的开发服务器中,我通过在settings.py中注释掉这些行来修复它

BASE_DIR = os.path.dirname(os.path.dirname(__file__))


MEDIA_ROOT = os.path.join(BASE_DIR, 'media').replace('\\', '/')
MEDIA_URL = '/media/'
STATICFILES_DIRS = (
     os.path.join(BASE_DIR, 'static'),
)

在模板中,通过锚标记创建链接,并在该文件对象的末尾添加.url e、 g

{%用于post%中的post}
{%endfor%}

这是一个服务器错误。我假设您正在使用Nginx。只需将其添加到您的Nginx配置文件(/etc/Nginx/sites available/example.com)的location/static下即可/

location /media/ {
    root /home/user/myprojectdir;
}

在这里,user应该是您创建的用户名,myprojectdir应该是您的项目目录

STATIC\u URL
应该是
MEDIA\u URL
并且确保添加
STATIC(settings.MEDIA\u URL,document\u root=settings.MEDIA\u root)
在主项目应用程序的
url.py
文件中,而不是在其他已安装的应用程序中。在我的例子中,我做得不对,因此面临问题。指向文档的链接:。注意:“仅在调试模式下工作”和“不适合生产使用!”。