這是我第一次使用MEDIA_ROOT/MEDIA_URL,我對配置有點困惑。我有一個圖像上傳表單,可以保存原始圖像和調整大小的副本。我想將這兩個圖像保存到我的MEDIA文件夾,但將它們分開。目前的結構:Django MEDIA_ROOT,MEDIA_URL等
project/
----apps/
--------appOne/
------------static/
------------templates/
------------__init__.py
------------models.py
------------urls.py
------------views.py
--------__init__.py/
----MEDIA/
----project/
--------__init__.py
--------settings.py
--------urls.py
----manage.py
我想原來上傳的圖像MEDIA /和調整後的圖像保存到一個文件夾中的媒體文件夾內,如媒體/媒體/。現在,它的嵌套3次:
original image goes to ---> MEDIA/media/
resized image goes to ---> MEDIA/media/media
我幾乎可以肯定,我有我的設置錯了,但我一直在擺弄它太長時間,並沒有什麼工作。看起來每個教程都配置了不同的東西,我只是不確定首選結構是什麼,或者爲什麼我當前的配置不按我期望的方式工作。
這裏是我的settings.py:
MEDIA_ROOT = os.path.join(BASE_DIR,'MEDIA')
MEDIA_URL = "media/"
models.py:
from django.conf import settings
from smartfields import fields
from smartfields.dependencies import FileDependency
from smartfields.processors import ImageProcessor
class Image(models.Model):
client = models.ForeignKey(Client, null=True, blank=True)
model_pic = fields.ImageField(upload_to=settings.MEDIA_URL, dependencies=[
FileDependency(processor=ImageProcessor(
format='PNG', scale={'max_width': 500, 'max_height': 500}))
])
views.py:
def upload(request):
form = ImageUploadForm(request.POST, request.FILES)
if form.is_valid():
client = Client.objects.get(id=request.session['id'])
image = Image.objects.create(client=client, model_pic=form.cleaned_data['image'])
return redirect(reverse('cphh:gallery'))
def show_images(request):
context = {
'images': Image.objects.all().order_by('-created_at'),
'media_url': settings.MEDIA_URL,
}
return render(request,'cphh/gallery.html', context)
三重嵌套上傳的圖片都呈現正常上我的模板:
{% for image in images %}
<img class="gallery-image" src="{{media_url}}{{ image.model_pic }}"
{% endfor %}
請閱讀此鏈接: https://docs.djangoproject.com/en/1.10/ref/settings/#media-url https://docs.djangoproject.com/en/1.10/ref/設置/#media-root https://easy-thumbnails.readthedocs.io/en/2.1/ –