Pur*_*opy 2 python django image image-uploading django-rest-framework
我有一个项目有3个应用程序,一个名为商店的商店模型,产品有产品模型,api是其余的框架应用程序,为客户提供Json结果.我在settings.py中设置了媒体根,MEDIA_ROOT = '/photos/'并且上传适用于产品和商店模型.这里的主要问题是,由于某种原因,其余框架返回一个引用api app而不是产品的url或存储媒体根URL的应用程序.这是我的模特
class Product(models.Model):
def get_image_path(instance, filename):
return '/Products/' + filename
picture = models.ImageField(width_field=None, max_length=100, blank =True, null =True)
Run Code Online (Sandbox Code Playgroud)
商店:
class Store(models.Model):
def __str__(self):
return self.name
def get_image_path(instance, filename):
return os.path.join('productphotos', 'stores', filename)
picture = models.ImageField(width_field=None, max_length=100, blank =True, null =True)
Run Code Online (Sandbox Code Playgroud)
如何将mediaroot设置为项目目录,以便项目中的所有应用程序将其引用为mediaroot而不是自己?
上传工作并将图片上传到项目根目录中的指示目录(找到manage.py),但其余框架认为它应该从api应用程序获取媒体..这样做的正确方法是什么?这是截图:
该MEDIA_URL设置是浏览器中的URL路径.该MEDIA_ROOT设置是服务器上的根目录,应该是绝对路径.
MEDIA_URL = '/pictures/'
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
MEDIA_ROOT = os.path.join(BASE_DIR, 'uploaded_pictures')
Run Code Online (Sandbox Code Playgroud)
另外,如果你想Product和Store图片进入不同的子目录,例如pictures/products/和pictures/store/,你需要设置upload_to对模型参数场.例如
picture = models.ImageField(upload_to='products/', ... )
Run Code Online (Sandbox Code Playgroud)
编辑:要在开发期间提供静态和媒体文件,请在urls.py的末尾添加此文件
if settings.DEBUG:
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from django.conf.urls.static import static
urlpatterns += staticfiles_urlpatterns()
urlpatterns += static(
settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1404 次 |
| 最近记录: |