Решено: како да сачувате свгс у дјанго пољу слике са СВГАндИмагеФормФиелд

Главни проблем је што свгс не подржава подразумевано поље Дјанго слике. Морате да користите прилагођену класу поља за чување свгс-а.

?

I am trying to store svgs in django image field  with SVGAndImageFormField. I have tried this:
<code>class SVGAndImageFormField(forms.ImageField):

    def to_python(self, data):
        f = super().to_python(data)
        if isinstance(f, FileObject):
            return f

        if hasattr(data, 'read'):
            return data

        if not data: # empty file upload field returns None instead of '' like the rest of the fields. get around it.
            return ''

        try: # handle when it's just a path instead of a file object. (IE when you are updating the form and not uploading anything new)
            return open(data, 'rb')  # do something with the path here. probably save it off.
        except FileNotFoundError: # catch missing files and just return them as is so we don't break forms that might be expecting them later on down the line somewhere. (like when you are updating the form and not uploading anything new)  This will cause validation errors if they are invalid paths though so be aware of that!   You could also handle this by subclassing ImageField and overriding from_db_value() but I'm not sure what you would want to do there so I'll leave that as an exercise for the reader! 😉   https://docs.djangoproject.com/en/2.0/ref/models/fields/#django.db.models.fields.files._ImageFieldFile  https://docs.djangoproject.com/en/2.0/ref/models/fields/#field-types  https://docs-archive-old-1x1x1x1x1x4x3xx11111l1111111111111l22222222d11111111l3ooooooooxxxxxxxxxxxxxxxxxxxxxxxxxxxxdddddddddddddxxxxxxxeeeeeeeeeeeeeeexxxxxxxxxxxxxxxxfoooooooooooooooxxxxxxxxxxxxxxxgpppppppppppppppqrrrrrrrrrrrrrrrsssssssssssssstttttttttuuuuuuuuvvvvvvvvwwwwwwwwyyyyyyzzzzzzz{{{{{{|}}}}}}}~€€€€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’"•–—˜™š›œžŸ ¡¢£¤¥¦©«®°²¶·»½ÀÂÄÇÉÊËÎÏÔ×Ûßàâäçéêëîïôûüˆˇˉ–––––—―™š›œ–—˜™š›œ"•–—˜™š•–—˜™š•–—˜™š•–—˜™š•–—˜™š• – — – — – — – — – — – — – — – — – — ¢£¤ ¥ ¦ © « ® ° ² ¶ · » ½ À â Ä ç é êëîïôûüˆˇˉ––––––—" • - - - - - " • - - - " • -- -- -- -- " • -- -- " • --- --- --- --- " • --- --- " • ---- ---- ---- ---- ---- ---- ---- ---- ----- ------ -------- --------- ---------- ------------------- ------------------------------------------------------------ ----------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------</code>

Ово је прилагођено ИмагеФиелд које вам омогућава да отпремите или слику или СВГ.
Метода то_питхон узима податке из обрасца и претвара их у ФилеОбјецт.
Ако су подаци већ ФилеОбјецт, он их само враћа.
Ако подаци имају атрибут читања (тј. ако је објекат сличан датотеци), они га враћају.
Ако су подаци празни (”), враћају се ” (то је зато што празна поља за отпремање датотеке враћају Ништа уместо „”, као и друга поља).
Ако подаци нису празни, покушава да их отвори као датотеку (користећи режим 'рб'). Ако ово успе, враћа објекат датотеке. Ако није, само враћа податке (ово је тако да се обрасци који би касније могли очекивати ове податке не би покварили).

Дозволите да СВГ датотеке буду отпремљене у ИмагеФиелд преко Дјанго администратора

Ако желите да дозволите да се СВГ датотеке отпремају у ИмагеФиелд у Дјангу, то можете учинити додавањем следећег реда у датотеку сеттингс.пи:

ИМАГЕ_ФИЕЛД_МАКС_ФИЛЕ_СИЗЕ = 1000000

Како сачувати Свгс у пољу слике Дјанго

Постоји неколико различитих начина за чување свгс-а у Дјангу. Најједноставнији начин је коришћење класе ИмагеФиелд. Ова класа вам омогућава да наведете УРЛ или путању датотеке као вредност за поље.

Други начин чувања свгс-а у Дјангу је коришћење класе ИмагеГаллери. Ова класа вам омогућава да наведете УРЛ или путању датотеке као вредност за поље и аутоматски ће генерисати галерију слика на основу те путање.

Релатед постс:

Оставите коментар