Я хочу загрузить изображение с веб-страницы, оно не идет в медиа-каталог - PullRequest
0 голосов
/ 05 апреля 2019

Когда я загружаю изображение из панели администратора, оно переходит на http://127.0.0.1:8000/media/shop/images/Digital_India_empower_youth.jpg, но когда я загружаю изображение с веб-страницы, оно показывает загруженный файл с именем в панели администратора, и каталог не отображается, и не отображается в каталоге проекта.

models.py

class Product(models.Model):
    product_id = models.AutoField
    product_name = models.CharField(max_length=50)
    category = models.CharField(max_length=50,default="")
    price = models.IntegerField(default=0)
    desc = models.CharField(max_length=300,default="")
    image = models.ImageField(upload_to='shop/images', default="")
    #chk=True

    def __str__(self):
        return self.product_name

views.py

def product(request):
    if request.method=="POST":
        name=request.POST.get('name','')
        category=request.POST.get('category','')
        price=request.POST.get('price','')
        desc=request.POST.get('desc','')

        image=request.POST.get('image','')
        product=Product(product_name=name,category=category,price=price,desc=desc,image=image)
        product.save()

        return render(request, 'shop/sell.html')

setting.py

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

sell.html

<div class="form-group">
<label for="price">Price</label>
<input type="text" class="form-control" id="price"
name="price"placeholder="100">
</div>
<div class="form-group">
<label for="desc">Description</label>
<input type="text" class="form-control" id="desc"
name="desc" placeholder="Write few things about books">
</div>
<div class="form-group">
<label for="image">Upload Image</label>
<input type="file"id="image" name="image">
</div>
<button type="submit" class="btn btn-primary">Sell</button>
</div>

Ответы [ 2 ]

0 голосов
/ 08 апреля 2019

Ошибка состояла в том, что я не использовал хранилище файлов и сохранял только имя файла в поле изображения, поэтому используйте описанный формат, который описан ниже

views.py

if request.method=="POST" and request.FILES['imag']:
    image=request.FILES['imag']
    fs=FileSystemStorage()
    fs.save(image.name,image)
    image=image
    name=request.POST.get('name','')
    category=request.POST.get('category','')
    price=request.POST.get('price','')
    desc=request.POST.get('desc','')
    product=
    Product(product_name=name,category=category,
    price=price,desc=desc,image=image)
        product.save()
    sel=True

    #chk=True

return render(request,'shop/product.html')
0 голосов
/ 05 апреля 2019

Я не уверен, как вы смотрите файл настроек, но вам нужно настроить MEDIA_URL и MEDIA_ROOT Существует несколько способов сделать это, вы можете использовать Django FileSystemStorage или используйте ModelForms и сохраните его поверх модели.

У Django есть полный пример того, как это сделать, прочитайте раздел FileUplods .

В конце для HTML вам нужно установить, и это обязательно enctype="multipart/form-data" или request.FILES будет пустым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...