标签: django-media

页面未找到404 Django媒体文件

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

MEDIA_ROOT = '/peaceroot/www/media/'
MEDIA_URL = '/media/'
Run Code Online (Sandbox Code Playgroud)

但通过管理员我试图访问上传的图像文件

HTTP://本地主机:8000 /媒体/项目/ 1a39246c-4160-4cb2-a842-12a1ffd72b3b.jpg

然后我收到404错误.

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

python django django-settings django-media

24
推荐指数
3
解决办法
2万
查看次数

在django 1.8中部署期间提供媒体文件

我正在尝试在heroku上部署我的django应用程序.所有静态文件都由whitenoise成功提供并迁移.但是如何ImageField在生产期间获取用于上传的媒体文件.

我的 settings.py

STATIC_URL = '/static/'
STATIC_ROOT = 'C:/Users/Sak/mpro/feat/static/'
STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, "media")
Run Code Online (Sandbox Code Playgroud)

wsgi.py

import os

from django.core.wsgi import get_wsgi_application

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mpro.settings")

application = get_wsgi_application()

try:
  from django.core.wsgi import get_wsgi_application
  from whitenoise.django import DjangoWhiteNoise
  application = get_wsgi_application()
  application = DjangoWhiteNoise(application)   
  from dj_static import Cling
  application = Cling(get_wsgi_application())
except:
     pass
Run Code Online (Sandbox Code Playgroud)

urls.py

urlpatterns = [
url(r'^', include('feat.urls', namespace="feat")),
url(r'^admin/', include(admin.site.urls)),
 ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Run Code Online (Sandbox Code Playgroud)

我的所有媒体文件都上传到base_dir/media/media,当whitenoise收集静态文件时,它只收集文件STATIC_ROOT,所以如何部署我的媒体文件.当我运行时,heroku …

python django heroku django-media django-staticfiles

16
推荐指数
1
解决办法
2937
查看次数

在django中验证错误时将css类添加到字段

我正在使用Django的模型并且非常好.如果存在与之关联的验证错误,如何突出显示实际文本框(例如border:red).基本上我想要的是在字段存在验证错误时添加类(错误).

python django django-forms django-validation django-media

12
推荐指数
2
解决办法
1万
查看次数

Django在openshift中提供媒体文件(用户上传的文件)

我已经在openshift中成功部署了我的Django项目.但我需要能够提供用户上传的文件.我为此用户MEDIA_ROOT和MEDIA_URL.我在这里遵循了教程,但没有任何反应.我不得不改变MEDIA_ROOT,因为我认为那是不正确的.所以我的MEDIA_ROOT看起来像

MEDIA_ROOT = os.path.join(os.environ.get('OPENSHIFT_DATA_DIR', ''),'media')
MEDIA_URL = '/media/'
Run Code Online (Sandbox Code Playgroud)

我在/ wsgi文件夹中添加了.htaccess,正如文章中所述

RewriteEngine On
RewriteRule ^application/media/(.+)$ /static/$1 [L]    
Run Code Online (Sandbox Code Playgroud)

并且创建了构建脚本,以便在文章中提到静态媒体的符号链接.

#!/bin/bash
if [ ! -d $OPENSHIFT_DATA_DIR/media ]; then
    mkdir $OPENSHIFT_DATA_DIR/media
fi

ln -sf $OPENSHIFT_DATA_DIR/media $OPENSHIFT_REPO_DIR/wsgi/static/media
Run Code Online (Sandbox Code Playgroud)

在我的urls.py中,我添加了

urlpatterns += static(settings.MEDIA_ROOT, document_root=settings.MEDIA_URL)
Run Code Online (Sandbox Code Playgroud)

但我仍然不能为他们服务.我也尝试不在urls.py中包含django静态方法,但结果相同.

另一个教程中.htacces放在静态文件夹中.难道我做错了什么?

python django django-media openshift

12
推荐指数
1
解决办法
2975
查看次数

Django Storages使用s3boto忽略MEDIA_URL

我试图在我的应用程序中使用django-storage与s3boto并尝试从s3提供媒体和静态文件.

我的设置文件中有以下设置:

AWS_STORAGE_BUCKET_NAME = '<bucket_name>'
AWS_S3_ACCESS_KEY_ID = '<access_key>'
AWS_S3_SECRET_ACCESS_KEY = '<secret>'
AWS_S3_CUSTOM_DOMAIN = '%s.s3.amazonaws.com' % AWS_STORAGE_BUCKET_NAME

STATICFILES_LOCATION = 'static'
STATICFILES_STORAGE = '<custom_storage_satic>'

MEDIAFILES_LOCATION = 'media'
DEFAULT_FILE_STORAGE = '<custom_storage_media>'
Run Code Online (Sandbox Code Playgroud)

我的custom_storages.py是

from django.conf import settings
from storages.backends.s3boto import S3BotoStorage

class StaticStorage(S3BotoStorage):
    location = settings.STATICFILES_LOCATION

class MediaStorage(S3BotoStorage):
    location = settings.MEDIAFILES_LOCATION
Run Code Online (Sandbox Code Playgroud)

当我在django中创建图像时,而不是从我的图像开始的相对路径

image.url
'/media/image/<rest_of_the_path>.jpg'
Run Code Online (Sandbox Code Playgroud)

我得到了绝对的网址,就像这样

image.url
'https://<s3_bucket_name>.s3.amazonaws.com/media/image/original/'
Run Code Online (Sandbox Code Playgroud)

当我使用本地存储而不是s3boto时,它按预期工作并给我相对路径.我在这里错过了什么吗?

python django amazon-s3 django-media django-storage

7
推荐指数
1
解决办法
2032
查看次数

Django无法找到我的媒体文件(在开发服务器上)

媒体目前在我的本地开发机器上.

我的MEDIA_ROOT,MEDIA_URL,ADMIN_MEDIA_PREFIX并指定如下:

MEDIA_ROOT = os.path.join(os.path.dirname(__file__), "media")
MEDIA_URL = '/media/'
SITE_URL = 'http://localhost:80'
ADMIN_MEDIA_PREFIX = '/media/admin/'
Run Code Online (Sandbox Code Playgroud)

没有'admin'文件夹,但这不应该有所作为我不认为.在urls.py文件中我有:

(r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT}),
Run Code Online (Sandbox Code Playgroud)

我不知道应该怎样做才能让它发挥作用.[我正在尝试学习django并且正在使用一个非常多毛的现有项目]

python django django-media

6
推荐指数
2
解决办法
7004
查看次数

从Django中的媒体目录打开数据文件

我有一个应用程序,允许用户上传带有数据的CSV文件,然后将数据绘制成图形并显示给用户.这些文件在媒体文件夹中保存为媒体.但是在我的图表视图中,我需要打开文件并进行处理.我的问题是我只能打开项目当前工作目录中的文件,并且每当我尝试从该目录之外的某个位置上传文件时,我都会收到此错误:

File b'TEST.CSV' does not exist
Run Code Online (Sandbox Code Playgroud)

我试过这个,但没有成功:

file_upload_dir = os.path.join(settings.MEDIA_ROOT, 'Data_Files')
data_file = open(os.path.join(file_upload_dir, new_file), 'rb')
Run Code Online (Sandbox Code Playgroud)

该变量new_file只是从会话中保存的文件的名称,而不是该文件的路径.Data_Files是媒体目录中包含上载文件的目录.

我的Django媒体设置是

SETTINGS_DIR = os.path.dirname(__file__)
PROJECT_PATH = os.path.join(SETTINGS_DIR, os.pardir)
PROJECT_PATH = os.path.abspath(PROJECT_PATH)

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(PROJECT_PATH, 'media')
Run Code Online (Sandbox Code Playgroud)

有没有办法从视图中正确引用媒体文件?

这是file_upload_dir新文件的输出和位置.

>>> print(file_upload_dir)
C:\\Users\\vut46744\\Desktop\\graphite_project\\media\\Data_Files

>>> print(os.path.join(file_upload_dir, new_file))
C:\\Users\\vut46744\\Desktop\\graphite_project\\media\\Data_Files\\TEST.CSV
Run Code Online (Sandbox Code Playgroud)

python django file-io django-media

6
推荐指数
1
解决办法
4524
查看次数

Django / Nginx-提供超过一定大小的媒体文件时,禁止出现错误403

用户上载图像时,图像存储在media项目目录内的文件夹中。问题在于,当他们希望在网站上看到它时,nginx 403 Forbidden对于大约3 Mb以上的图像返回错误。

我设定nginx.conf client_max_body_size为8M

http {

        ##
        # Basic Settings
        ##
        client_max_body_size 8M;
     ...
Run Code Online (Sandbox Code Playgroud)

并且已经更改了内存大小settings.py

FILE_UPLOAD_MAX_MEMORY_SIZE = 8388608
Run Code Online (Sandbox Code Playgroud)

当我上传3 MB以下的图像时,没有问题,如果我上传3 MB以上的图像,则可以在media文件夹中看到它,但是会出现错误,而不是提供图像:

GET https://example.com/media/images/dom.jpg 403 (Forbidden)
Run Code Online (Sandbox Code Playgroud)

我注意到3 MB以下的文件具有不同的权限:

-rw-r--r-- 1 django www-data    4962 Jul 19 19:51 61682_3995232_IMG_01_0000.jpg.150x84_q85_crop.jpg
-rw-r--r-- 1 django www-data 1358541 Jul 20 09:32 byt.jpg
-rw------- 1 django www-data 3352841 Jul 20 09:32 dom.jpg
-rw-r--r-- 1 django www-data    5478 Jul 19 20:10 downloasd.jpeg.150x84_q85_crop.jpg
-rw-r--r-- 1 django www-data    3225 Jul …
Run Code Online (Sandbox Code Playgroud)

python django nginx django-media

6
推荐指数
1
解决办法
2044
查看次数

如何在 django 应用程序 nginx 服务器中提供媒体文件?

我正在使用 nginx、gunicorn、postgresql 在生产模式(debug=false)下测试我的 django 应用程序。

虽然我能够渲染静态文件,但无法访问存储在“media”文件夹中的文件。

在我的 settings.py 中,以下是设置的变量:

 MEDIA_URL = '/media/'
 MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
 # also tried another combination: MEDIA_ROOT = 'media'
Run Code Online (Sandbox Code Playgroud)

同样在 urls.py 中 MEDIA_ROOT 设置如下:

 urlpatterns = [
   path('admin/', admin.site.urls),
   path('venter/', include('appname.urls')),
 ]+static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Run Code Online (Sandbox Code Playgroud)

在我的 /etc/nginx/sites-available/ 文件中,我有以下设置:

server {
listen 80;
server_name website.com www.website.com ;

location = /favicon.ico { access_log off; log_not_found off; }
location /static {
    root /home/a/btawebsite;
}

location /media/ {
    root /home/a/btawebsite;
}

location / {
    include proxy_params;
    proxy_pass http://unix:/home/a/myproject.sock;
}
}
Run Code Online (Sandbox Code Playgroud)

然而,在渲染存储在我的 …

django nginx django-media

6
推荐指数
2
解决办法
3424
查看次数

S3Boto存储和单元测试

我在 Django 项目中使用了storages.backends.s3boto.S3BotoStoragefor my 。DEFAULT_FILE_STORAGE

理想情况下,我想FileSystemStorage在单元测试期间使用默认值,或者创建一个临时存储桶,在测试结束时将其删除。

实现这一目标的最佳方法是什么?

django boto django-testing django-media django-storage

5
推荐指数
1
解决办法
2311
查看次数