SuspiciousFileOperation at /report/ Объединенный путь находится вне компонента базового пути: Django
hi мне нужно сгенерировать pdf с изображениями с помощью xhtml2pdf;
Я добавил метод link_callback следующим образом:
def link_callback(uri, rel):
result = finders.find(uri)
print("0")
if result:
if not isinstance(result, (list, tuple)):
result = [result]
result = list(os.path.realpath(path) for path in result)
path=result[0]
else:
sUrl = settings.STATIC_URL
sRoot = settings.STATIC_ROOT
mUrl = settings.MEDIA_URL
mRoot = settings.MEDIA_ROOT
if uri.startswith(mUrl):
path = os.path.join(mRoot, uri.replace(mUrl, ""))
elif uri.startswith(sUrl):
path = os.path.join(sRoot, uri.replace(sUrl, ""))
else:
return uri
# make sure that file exists
if not os.path.isfile(path):
return path
это в views.py, как я получал поле изображения:
image1_full = CustomerPersonalData.objects.get(user_related=request.user)
obj_image1 = CustomerPersonalData._meta.get_field("image1"
value_image1 = obj_image1.value_from_object(image1_full)
в models.py:
class CustomerPersonalData(models.Model):
user_related = models.OneToOneField(User, on_delete = models.CASCADE)
image1 = models.ImageField(blank=True, upload_to="media")
def save(self, force_insert=False, force_update=False):
img = Image.open(self.image1)
super(CustomerPersonalData, self).save(force_insert, force_update)
и в generated_pdf.html:
<p><img src="/home/dev/.virtualenvs/django-projects/project1/static/media/{{ value_image1 }}"></p>
в settings.py:
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATIC_URL = '/static/'
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
---> отображается ошибка :
SuspiciousFileOperation at /report/
The joined path (/home/dev/.virtualenvs/django-projects/project1/static/media/media/image1.png) is located outside of the base path component (/home/dev/.virtualenvs/django-projects/lib/python3.7/site-packages/django/contrib/admin/static)
-- Я хочу знать, что означает эта ошибка и как я могу ее решить, иначе путь (/home/dev/.virtualenvs/django-projects/project1/static/media/media/image1.png) правильный.