2011-10-30 12 views

cevap

9

Sen tinymce aracılığıyla django-TinyMCE kullanabilirsiniz:

http://code.google.com/p/django-tinymce/

Sen yönetici her bir metin alanına veya Charfield üzerinde kullanım tinymce ya, yoksa sadece belirli alanlara ekleyebilirler.

Önceki için, formfield_overides yönetici model ayarlarını kullanarak her CharField veya TextField'ı tinymce kullanacak şekilde kullanın. Yani admin.py içinde: İkincisi için

formfield_overrides = { 
    models.TextField: {'widget': TinyMCE(attrs={'cols': 80, 'rows': 30})}, 
} 

Eğer TinyMCE kullanmak istediğiniz alan için widget'ı değiştirin. senin forms.py Yani: Sonra

class BlogForm(ModelForm): 
    body = forms.CharField(widget=TinyMCE(attrs={'cols': 80, 'rows': 30})) 

ve (admin.py olarak) bu formu kullanmak için yönetici söyleyin:

from models import Blog 
from forms import BlogForm 

class BlogAdmin(ModelAdmin): 
    form = BlogForm() 
+0

Bunu internette buldum: https://github.com/pydanny/django-wysiwyg. Bu iyi mi? – Adnan

+0

Kullanmadım ama eminim ki iş de yapıyor. –

+0

Bir forms.py yaratıyorum çünkü şu anda bir tane yok mu? – Adnan

8

Sen kaç basit şeyler yapmak gerekir (NicEdit WYSIWYG örnek olarak) : 1) Gerekli düzenleyiciyi indirin ve projenizdeki bir klasöre kaydedin, medya klasöründe söyleyin; urls.py sonraki satırları ekleyin içinde

2):

import os 

PROJECT_DIR = os.path.dirname(__file__) 

urlpatterns = patterns('', 
    ..., 
    (r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': PROJECT_DIR + r'/media/'}), 
    ..., 
) 

3) şablonlar klasöründeki klasör 'yönetici' oluşturmak ve django/contrib/yönetici/şablonlar/admin/tabanından dosya base.py orada kopyalamak .py;

4) açık dosya base.py ve bu şekilde düzenleme - ilk 9 satır her tarafına dokunun ancak 9 satırda sonraki kodu bulunmamalıdır: hepsi

<script type="text/javascript" src="/media/nicedit/nicEdit.js"></script> 
<script type="text/javascript"> 
    bkLib.onDomLoaded(function() { 
     nicEditors.allTextAreas({iconsPath : '/media/nicedit/nicEditorIcons.gif', 
      buttonList : ['fontSize','fontFamily','bold','italic', 
       'underline','strikeThrough','left','center','right','justify', 
       'ol','ul','subscript','superscript','hr','link','unlink','forecolor', 
       'image','upload','xhtml'] 
     }); 
    }); 
</script> 

. Artık tüm textareas'ta yönetici panelinde WYSIWYG'niz mevcut olacaktır.

1

Vitali Ponomar'ın verdiği çözümü uygulamaya çalıştım. o benim /media/js/ klasörüne konulan ve (ı alanını değiştirmek için gerektirir TinyMCE Documentation gördüğümüz modelde alanım türlerini değiştirmek gerektirmez sadece iki javascript dosyaları (nicEdit.js ve nicEditorIcons.gif) çünkü ben NicEdit tercih

bir HTMLField türüne ve veritabanındaki herhangi bir şeyi değiştirmek istemedim).

class NewsAdmin(admin.ModelAdmin): 
    list_display = ('title','lead','date') 
    class Media: 
     js = ('/media/js/nicEdit.js', '/media/js/textarea_content.js') 

admin.site.register(News, NewsAdmin) 

Ayrıca bazı spesifik düğmeleri ile bir spesifik textarea başlatmak için kullanılan /media/js/ klasörüne konulan dosya textarea_content.js geçerli::

bkLib.onDomLoaded(function() { 
nicEditors.editors.push(
    new nicEditor({iconsPath : '/media/js/nicEditorIcons.gif', 
     buttonList : ['fontSize','fontFamily','bold','italic', 
      'underline','strikeThrough','left','center','right','justify', 
      'ol','ul','subscript','superscript','hr','link','unlink','forecolor'] 
    }).panelInstance(
     document.getElementById('id_content') 
    ) 
); 
}); 

Ancak eğer

Ben modelde koymak Yukarıdaki kod yerine bkLib.onDomLoaded(nicEditors.allTextAreas); kullanabilirsiniz tüm textareas için kullanmayı planlıyoruz.

Son olarak, izinlerle dikkatli olun (üretim ortamında ilk defa denediğimde javascript dosyalarım izinler nedeniyle kullanılamaz).

İlgili konular