Behind the demo

The code in the demo seems very simple, with only a model field galleryfield.fields.GalleryField imported in demo.models to construct the gallery model. Actually, there’re some logic falls behind the code.

How it handles the images

Although we didn’t explicitly specified in the code, the demo is actually using built-in galleryfield.models.BuiltInGalleryImage as the image model for creating, listing, and updating images. The image model has 2 fields: a galleryfield.fields.GalleryField named image and an User field named creator. We think whatever it called, an User field is needed because that’s the basis for the server to determine the whether requested users are qualified to modify or potentially delete existing image instances.

Further, If you look into galleryfield.urls and galleryfield.image_views, you will see 3 class-based views:

  • galleryfield.image_views.BuiltInImageCreateView for uploading images, requires login. Following the naming rule, The url name is builtingalleryimage-upload.

  • galleryfield.image_views.BuiltInImageListView for fetching existing images, restricted to the owner of the images or superuser, with url name builtingalleryimage-fetch.

  • and galleryfield.image_views.BuiltInImageCropView for server side cropping of uploaded images, restricted to the owner of the images or superuser, with url name builtingalleryimage-crop.