я использую django 2.2 с python 3 У меня есть функция загрузки и функция загрузки в моделях, ссылка не работает, отсутствует что-то
функция загрузки
def download_product(request,slug,filename):
product = Product.objects.get(slug=slug)
if product in request.user.profile.ebooks.all():
product_file = str(product.download)
filepath = os.path.join(settings.PROTECTED_UPLOADS,product_file)
wrapper = FileWrapper(open(filepath,'rb'))
response = HttpResponse(wrapper,content_type=guess_type(product_file))
response['Content-Diposition'] = 'attachment;filename=%s' %filename
response['Content-Type'] = ''
response['X-SendFile'] = filepath
return response
else:
raise Http404
models.py
class Product(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE,null=True,blank=True)
name = models.CharField(max_length=120)
description = models.CharField(max_length=500,null=True,blank=True)
download = models.FileField(upload_to=download_loc,storage=FileSystemStorage(location=protected_loc),null=True,blank=True)
price = models.DecimalField(max_digits=60,decimal_places=2)
sale_price = models.DecimalField(max_digits=60,decimal_places=2,null=True,blank=True)
slug= models.SlugField()
def __str__(self):
return self.name
шаблон
{% for object in object_list %}
<div class="col-sm-3">
<p>{{ object.name }}</p>
<p>Price: ${{ object.price }}</p>
{% if object in user.profile.ebooks.all %}
{% if object.download %}
<p><a href='{{ object.download.url }}'>Download</a></p>
{% endif %}
<!-- add a button here to see the product -->
You own this
{% elif object in current_order_products %}
<a href="{% url 'shopping_cart:order_summary' %}" class="btn btn-warning">Go to Cart</a>
{% else %}
<a href="{% url 'shopping_cart:add_to_cart' object.id %}" class="btn btn-warning">Add to Cart</a>
{% endif %}
</div>
{% endfor %}
Таким образом, все файлы продуктов загружаются в защищенную папку, когда я добавляю продукт, но когда начинается загрузка, сначала ссылка указывает на папку мультимедиа вместозащищенная папка думала, что они находятся в одном каталоге.поэтому нажатие на кнопку загрузки дает 404 страницу не найденной
work \ static_cdn \ media \ work \ django.jpg "не существует