Как разрешить пользователям загружать изображения в фотолог?

Я настроил Photologue, но не знаю, как разрешить (обычному) пользователю загружать изображение без использования интерфейса администратора.

Я бы хотел, чтобы пользователи загружали изображения в кодировке base64 с холста HTML5, но на первом этапе было бы неплохо загружать файлы из файловой системы пользователя.

Думаю, я мог бы изменить этот общий пример того, как загружать файлы в использовать фотомодель фотолога. Я предполагаю, что это будет означать каким-то образом заполнение атрибута ImageField «ImageModel» «image».


person kossmoboleat    schedule 28.04.2013    source источник
comment
Вы когда-нибудь находили ответ? У меня такая же проблема..   -  person PhilBot    schedule 30.11.2013
comment
Да, мне удалось это реализовать. Я в значительной степени адаптировал связанный ответ. попробую написать ответ...   -  person kossmoboleat    schedule 01.12.2013


Ответы (1)


На самом деле я использовал связанное руководство по загрузке файлов и адаптировал его к фотологу. Из моего элемента холста я извлек URL-адрес данных base64 и установил для поля формы его значение, после чего я мог интерпретировать его на стороне сервера Django в представлении:

def upload_base64(request):
    # Handle file upload
    if request.method == 'POST':
        form = PhotoCodeForm(request.POST, request.FILES)

        if form.is_valid():
            uploaded_photo_data = base64.b64decode(request.POST['photocode'])

            uploaded_photo_file = ContentFile(uploaded_photo_data)            

            title_str = "Untitled"            
            slug = slugify( title_str + str( datetime.now() ) )

            uploaded_photo = Photo.objects.create( image = default_storage.save(slug, uploaded_photo_file),
                                            title = slug,
                                            title_slug = slug )

            name_upload_gallery = "user-upload-queue"                       

            try:
                upload_gallery = Gallery.objects.get(title_slug__exact=name_upload_gallery)      
            except ObjectDoesNotExist:
                return HttpResponseBadRequest('<html><body><p>The gallery "'+name_upload_gallery+'" does not exist.</p></body></html>')

            upload_gallery.photos.add(uploaded_photo)

            # Redirect to the photo gallery after POST
            return HttpResponseRedirect('/canvas/')
        else:
            return HttpResponseBadRequest('<html><body><p>The entered data was not correct.</p></body></html>')
    else:
        form = PhotoCodeForm() # A empty, unbound form

    return render_to_response(
        'photologue_upload/upload_base64.html',
        {'form': form},
        context_instance=RequestContext(request)
    )

upload_base64.html — это очень простая форма с фотокодом поля, куда вставляется строка base64.

person kossmoboleat    schedule 30.11.2013
comment
что такое фотокодформа? - person itsvinayak; 03.04.2020