2014-10-05 22 views
6

Django yönetici arayüzünde CKEditor içinde bazı resimler yükledim. Düzenleyicideki "Görüntü" düğmesini tıklayarak görüntüleri tarayabilir ve seçebilir ve sonra açılan pencerede "Sunucuya Göz At" ı tıklayabilirsiniz.Django-ckeditor ile yüklenen görseller nasıl kaldırılır?

Screenshot of the pop-up of CKEditor

Sorum şu: Ben sunucu üzerinde görüntüleri silebilirsiniz nasıl İşte pop-up bir görüntü var?

cevap

0

Ne yazık ki bu doğrudur. Django-ckeditor, bu sorun için yerleşik bir çözüm sunmuyor. Yüklenen dosyalar hakkında bilgi herhangi bir yerde saklanmaz.

Bunları saklamak istiyorsanız - kendiniz yapmalısınız!

geçersiz ile uygun veri modelini yöntemini silmek oluşturun (veya hazır, sizin için Django delete FileField dosyaların kaldırılmasını işleyebilir "akıllı alanlarda" herhangi birini kullanmak): Kendi sağlayın

from django.db import models 

class UploadedFile(models.Model): 
    uploaded_file = models.FileField(upload_to=u"storage/") 
    uploaded_at = models.DateField(editable=False, auto_now_add=True) 

    def __str__(self): 
     return os.path.basename(self.uploaded_file.path) 

    def url(self): 
     return self.uploaded_file.url 

    def delete(self, *args, **kwargs): 
     file_storage, file_path = self.uploaded_file.storage, self.uploaded_file.path 
     super(UploadedFile, self).delete(*args, **kwargs) 
     file_storage.delete(file_path) 

from django.conf import settings 
from django.contrib.admin.views.decorators import staff_member_required 
from django.views.decorators.cache import never_cache 
from django.views.decorators.csrf import csrf_exempt 
from ckeditor_uploader.views import upload, browse 
from .models import UploadedFile 
import re 

@staff_member_required 
@csrf_exempt 
def ckeditor_upload_wrapper(request, *args, **kwargs): 
    response = upload(request, *args, **kwargs) 

    if b"Invalid" not in response.content: 
     try: 
      matched_regex = re.search("callFunction\(\d, '(.*)'\);", str(response.content)) 
      file_location = matched_regex.group(1).lstrip(settings.MEDIA_URL) 
      UploadedFile(uploaded_file=file_location).save() 
     except Exception: 
      pass 
    return response 

@staff_member_required 
@csrf_exempt 
@never_cache 
def ckeditor_browse_wrapper(request, *args, **kwargs): 
    return browse(request, *args, **kwargs) 
: işlemlerini ezberlemek için kullanılacaktır " yükleme" (ve isteğe bağlı " göz") görünümü, uygulanması

değiştirme varsayılan yönlendirmeler urls.py:

... 
from app.views import ckeditor_upload_wrapper, ckeditor_browse_wrapper 

urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 

    #url(r'^ckeditor/', include('ckeditor_uploader.urls')), 
    url(r'^ckeditor/upload/', ckeditor_upload_wrapper, name='ckeditor_upload'), 
    url(r'^ckeditor/browse/', ckeditor_browse_wrapper, name='ckeditor_browse'), 
    ... 
] 

ve Şimdi ... hepsi bu eğer kayıt yeni adres uploadedfile modeli, arama ve kaldırmak gözatmak için tha iznini verir Yüklenen resimlerden herhangi biri doğrudan Django Yönetici panelinden.

(Bu çözelti uzantısı django-ckeditor 5.3 ile Django 1.10 için uygulanmıştır)
İlgili konular