我们从Python开源项目中,提取了以下50个代码示例,用于说明如何使用django.forms.ImageField()。
def result_item(self, item, obj, field_name, row): opts = obj._meta try: f = opts.get_field(field_name) except models.FieldDoesNotExist: f = None if f: if isinstance(f, models.ImageField): img = getattr(obj, field_name) if img: db_value = str(img) if db_value.startswith('/'): file_path = urlparse.urljoin(settings.REMOTE_MEDIA_URL, db_value) else: file_path = img.url if type(self.list_gallery)==str: file_path = '%s%s'%(file_path,self.list_gallery) item.text = mark_safe('<a href="%s" target="_blank" data-gallery="gallery"><img src="%s" class="field_img"/></a>' % (file_path, file_path)) return item # Media
def __set__(self, instance, value): previous_file = instance.__dict__.get(self.field.name) super(ImageFileDescriptor, self).__set__(instance, value) # To prevent recalculating image dimensions when we are instantiating # an object from the database (bug #11084), only update dimensions if # the field had a value before this assignment. Since the default # value for FileField subclasses is an instance of field.attr_class, # previous_file will only be None when we are called from # Model.__init__(). The ImageField.update_dimension_fields method # hooked up to the post_init signal handles the Model.__init__() cases. # Assignment happening outside of Model.__init__() will trigger the # update right here. if previous_file is not None: self.field.update_dimension_fields(instance, force=True)
def __init__(self, verbose_name=None, name=None, width_field=None, height_field=None, **kwargs): self.width_field, self.height_field = width_field, height_field super(ImageField, self).__init__(verbose_name, name, **kwargs)
def check(self, **kwargs): errors = super(ImageField, self).check(**kwargs) errors.extend(self._check_image_library_installed()) return errors
def _check_image_library_installed(self): try: from PIL import Image # NOQA except ImportError: return [ checks.Error( 'Cannot use ImageField because Pillow is not installed.', hint=('Get Pillow at https://pypi.python.org/pypi/Pillow ' 'or run command "pip install Pillow".'), obj=self, id='fields.E210', ) ] else: return []
def deconstruct(self): name, path, args, kwargs = super(ImageField, self).deconstruct() if self.width_field: kwargs['width_field'] = self.width_field if self.height_field: kwargs['height_field'] = self.height_field return name, path, args, kwargs
def formfield(self, **kwargs): defaults = {'form_class': forms.ImageField} defaults.update(kwargs) return super(ImageField, self).formfield(**defaults)
def get_field_attrs(self, attrs, db_field, **kwargs): if isinstance(db_field, models.ImageField): attrs['widget'] = AdminImageWidget attrs['form_class'] = AdminImageField self.include_image = True return attrs
def get_field_result(self, result, field_name): if isinstance(result.field, models.ImageField): if result.value: img = getattr(result.obj, field_name) result.text = mark_safe('<a href="%s" target="_blank" title="%s" data-gallery="gallery"><img src="%s" class="field_img"/></a>' % (img.url, result.label, img.url)) self.include_image = True return result # Media
def __init__(self, options={}, widget=None, *args, **kwargs): fields = ( forms.ImageField(), forms.CharField(), forms.CharField(), forms.CharField(), forms.CharField(), ) if widget is None: widget = CroppieImageRatioWidget(options=options) super(CroppieField, self).__init__( fields=fields, widget=widget, *args, **kwargs)
def __init__(self, *args, **kwargs): self._DjangoImageField = kwargs.pop('_DjangoImageField', DjangoImageField) super(ImageField, self).__init__(*args, **kwargs)
def from_native(self, data): """ Checks that the file-upload field data contains a valid image (GIF, JPG, PNG, possibly others -- whatever the Python Imaging Library supports). """ f = super(ImageField, self).from_native(data) if f is None: return None from api.compat import Image assert Image is not None, 'Either Pillow or PIL must be installed for ImageField support.' # We need to get a file object for PIL. We might have a path or we might # have to read the data into memory. if hasattr(data, 'temporary_file_path'): _file = data.temporary_file_path() else: if hasattr(data, 'read'): _file = six.BytesIO(data.read()) else: _file = six.BytesIO(data['content']) try: # load() could spot a truncated JPEG, but it loads the entire # image in memory, which is a DoS vector. See #3848 and #18520. # verify() must be called immediately after the constructor. Image.open(_file).verify() except ImportError: # Under PyPy, it is possible to import PIL. However, the underlying # _imaging C module isn't available, so an ImportError will be # raised. Catch and re-raise. raise except Exception: # Python Imaging Library doesn't recognize it as an image raise ValidationError(self.error_messages['invalid_image']) if hasattr(f, 'seek') and callable(f.seek): f.seek(0) return f
def get_field_result(self, result, field_name): if isinstance(result.field, models.ImageField): if result.value: img = getattr(result.obj, field_name) db_value = str(img) if db_value.startswith('/'): file_path = urlparse.urljoin(settings.REMOTE_MEDIA_URL, db_value) else: file_path = img.url result.text = mark_safe('<a href="%s" target="_blank" title="%s" data-gallery="gallery"><img src="%s" class="field_img"/></a>' % (file_path, result.label, file_path)) self.include_image = True return result # Media
def to_python(self, data): """ Checks that the file-upload field data contains a valid image (GIF, JPG, PNG, possibly others -- whatever the Python Imaging Library supports). """ test_file = super(DjangoImageField, self).to_python(data) if test_file is None: return None # We need to get a file object for Pillow. We might have a path or we might # have to read the data into memory. if hasattr(data, 'temporary_file_path'): ifile = data.temporary_file_path() else: if hasattr(data, 'read'): ifile = BytesIO(data.read()) else: ifile = BytesIO(data['content']) try: # load() could spot a truncated JPEG, but it loads the entire # image in memory, which is a DoS vector. See #3848 and #18520. image = Image.open(ifile) # verify() must be called immediately after the constructor. image.verify() # Annotating so subclasses can reuse it for their own validation test_file.image = image test_file.content_type = Image.MIME[image.format] except Exception: # add a workaround to handle svg images if not self.is_svg(ifile): six.reraise(ValidationError, ValidationError( self.error_messages['invalid_image'], code='invalid_image', ), sys.exc_info()[2]) if hasattr(test_file, 'seek') and callable(test_file.seek): test_file.seek(0) return test_file