Qual è il modo più semplice per aggiungere un editor WSYISWG al pannello di amministrazione su un blog di django?Come posso aggiungere un editor WSYWYG all'amministratore di Django?
risposta
È possibile utilizzare TinyMCE tramite django-TinyMCE:
http://code.google.com/p/django-tinymce/
È possibile utilizzare tinymce su ogni singolo campo di testo o Charfield in admin, oppure si può semplicemente aggiungere a particolari settori.
Per il primo, utilizzare ogni campo di testo o campo di testo per utilizzare tinymce utilizzando le impostazioni del modello di amministrazione formfield_overides. Quindi nel tuo admin.py:
formfield_overrides = {
models.TextField: {'widget': TinyMCE(attrs={'cols': 80, 'rows': 30})},
}
Per questi ultimi si cambia il widget per il campo che si desidera utilizzare TinyMCE su. Quindi nel tuo forms.py:
class BlogForm(ModelForm):
body = forms.CharField(widget=TinyMCE(attrs={'cols': 80, 'rows': 30}))
e poi dire l'amministratore di utilizzare questa forma (in admin.py):
from models import Blog
from forms import BlogForm
class BlogAdmin(ModelAdmin):
form = BlogForm()
Hai bisogno di fare alcune cose semplici (NicEdit WYSIWYG come esempio) :
1) scaricare l'editor necessario e salvarlo in una cartella del progetto, diciamo nella cartella dei media;
2) in urls.py aggiungere righe successive:
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) creare la cartella 'admin' nella cartella dei modelli e ci copia di file base.py da Django/contrib/admin/templates/admin/base .py;
4) File base.py aprire e modificare in questo modo - primi 9 righe non si toccano a tutti, ma dopo 9 ° fila aggiungere codice successivo:
<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>
Questo è tutto. Ora nel pannello di amministrazione in tutte le textareas sarà disponibile il tuo WYSIWYG.
Ho cercato di implementare la soluzione proposta da Vitali Ponomar.
scelgo NicEdit perché erano solo due file JavaScript (nicEdit.js
e nicEditorIcons.gif
) che ho messo nella mia cartella /media/js/
e non richiede di cambiare i miei tipi di campo nel modello (che ho visto in TinyMCE Documentation che richiede di modificare il campo a un tipo HTMLField e non volevo modificare nulla nel database).
ho messo nel modello:
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)
Il file textarea_content.js
che ho messo in /media/js/
cartella viene anche usato per inizializzare un textarea specifico con alcuni pulsanti specifici è:
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')
)
);
});
Tuttavia, se si stanno progettando di usarlo per tutti i textareas è possibile utilizzare bkLib.onDomLoaded(nicEditors.allTextAreas);
invece del codice precedente.
Infine, fai attenzione con le autorizzazioni (quando ho provato la prima volta in ambiente di produzione i miei file javascript non erano disponibili a causa delle autorizzazioni).
- 1. Ace Editor aggiungere manualmente frammenti
- 2. Pagedown (editor di markdown) con Django
- 3. Posso usare NetBeans con asp.net come editor?
- 4. Come aggiungere un listener doppio clic al mio editor GEF?
- 5. Come posso richiamare un editor di testo dal terminale?
- 6. Come posso rimuovere il primo suggerimento doctype di ace-editor nel mio html-editor?
- 7. Come aggiungere link cliccabili a un campo nell'amministratore di Django?
- 8. Come aggiungere un messaggio di errore a form.non_field_errors in django?
- 9. Come posso richiedere un inline nell'Amministratore Django?
- 10. Editor ACE: crea dinamicamente un nuovo editor
- 11. Come aggiungere Search_fields in Django
- 12. Posso aggiungere testo di aiuto nei campi del modello django
- 13. Come posso registrare un editor personalizzato globale in Spring-MVC?
- 14. Per l'amministratore di django, come posso aggiungere un campo al modello Utente e renderlo modificabile nell'amministratore?
- 15. Come aggiungere codice di riferimento JavaScript o css da un modello di editor
- 16. Come aggiungere un campo calcolato a un modello Django
- 17. Come aggiungere una nuova stringa in un file * .po w/un editor PO
- 18. Come aggiungere una 'stella *' dopo un django ModelForm CharField?
- 19. come aggiungere ancora Django url nella mascherina
- 20. Codemirror editor fullscreen - come aggiungere funzioni personalizzate allo specchio codice
- 21. Come posso nascondere un'etichetta django in un modulo django personalizzato?
- 22. Django: come posso creare un modulo di selezione multipla?
- 23. Come posso aggiungere un JTextField a un MenuBar di JFrame?
- 24. Come aggiungere WYSIWYG Editor nella configurazione del sistema Magento?
- 25. Aggiungere editor di base a elemento elemento anziché selettore
- 26. Posso aggiungere un intervallo di porte in netsh aggiungere urlacl?
- 27. Come aggiungere una sezione di report all'amministratore di Django?
- 28. come aggiungere una casella di ricerca personalizzata nell'amministratore di django
- 29. Modella Django come aggiungere un campo per confermare la password?
- 30. Come aggiungere un pulsante Annulla a DeleteView in django
Ho trovato questo in rete: https://github.com/pydanny/django-wysiwyg. Va bene? – Adnan
Non l'ho usato ma sono sicuro che faccia anche il lavoro. –
faccio un forms.py perché attualmente non ne ho uno? – Adnan