¿Cuál es la forma más sencilla de agregar editores WSYISWG al panel de administración en un blog django?¿Cómo puedo agregar un editor WSYWYG a Django admin?
Respuesta
Puede utilizar tinymce través django-tinymce:
http://code.google.com/p/django-tinymce/
También se puede usar tinymce en cada campo de texto o Charfield en el admin, o simplemente puede añadir a cada campo en particular.
Para el primero, puede usar cada cuadro de caracteres o campo de texto para utilizar tinymce utilizando la configuración del modelo de administrador formfield_overides. Así que en su admin.py:
formfield_overrides = {
models.TextField: {'widget': TinyMCE(attrs={'cols': 80, 'rows': 30})},
}
Para este último cambia el widget para el campo que desea utilizar en tinymce. Así que en su forms.py:
class BlogForm(ModelForm):
body = forms.CharField(widget=TinyMCE(attrs={'cols': 80, 'rows': 30}))
y luego decirle al administrador para utilizar este formulario (en admin.py):
from models import Blog
from forms import BlogForm
class BlogAdmin(ModelAdmin):
form = BlogForm()
que tiene que hacer algunas cosas simples (NicEdit WYSIWYG como ejemplo) :
1) descargue el editor necesario y guárdelo en alguna carpeta de su proyecto, digamos en la carpeta de medios;
2) en urls.py añadir siguientes líneas:
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) crear la carpeta 'admin' en la carpeta de plantillas y copia de archivos no base.py de django/contrib/admin/templates/admin/base .py;
4) base.py archivo abierto y editar esa manera - 9 primeras filas no se tocan en absoluto, pero después de la fila 9 de añadir siguiente código:
<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>
eso es todo. Ahora en el panel de administración en todas las áreas de texto, estará disponible su WYSIWYG.
Traté de implementar la solución dada por Vitali Ponomar.
elijo NicEdit porque eran sólo dos archivos JavaScript (nicEdit.js
y nicEditorIcons.gif
) que pongo en mi carpeta /media/js/
y no requiere cambiar mis tipos de campos en el modelo (que vi en TinyMCE Documentation que requiere para cambiar el campo a un tipo de campo HTMLField y no quería cambiar nada en la base de datos).
puse en el modelo:
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)
El archivo textarea_content.js
que puse en /media/js/
carpeta también se utiliza para inicializar un área de texto específico con algunos botones específicos es:
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')
)
);
});
Sin embargo, si planean usarlo para todas las áreas de texto; puede usar bkLib.onDomLoaded(nicEditors.allTextAreas);
en lugar del código anterior.
Finalmente, tenga cuidado con los permisos (cuando probé por primera vez en el entorno de producción mis archivos javascript no estaban disponibles debido a los permisos).
- 1. django-admin: Agregar fila adicional con totales
- 2. ¿Cómo agregar campos multitracionales manytomany en django admin?
- 3. WMD en Django Admin?
- 4. Cómo agregar JavaScript personalizado a WordPress Admin?
- 5. Django Admin + ¿Filtro horizontal?
- 6. ¿Cómo puedo crear una página personalizada para admin de django?
- 7. No puedo iniciar sesión en Django admin
- 8. Django admin paginación pregunta
- 9. ¿Cómo forzar a Django Admin a usar select_related?
- 10. Django admin inline
- 11. Cómo limitar los campos en django-admin según el usuario?
- 12. Funcionalidad emergente Django Admin
- 13. Django admin list_display newline
- 14. Django Admin Fieldsets
- 15. ¿Cómo solicito una línea en Django Admin?
- 16. Django fix Admin plural
- 17. Cómo agregar 'colapsar' a Django StackedInline
- 18. Anular un formulario en Django admin
- 19. Formularios dinámicos en django-admin
- 20. Django Admin CSS falta
- 21. django: using admin datepicker
- 22. Exponer django admin a los usuarios. ¿Perjudicial?
- 23. ¿Subir imágenes usando Django Admin?
- 24. Django admin diferentes líneas para el cambio y agregar vista
- 25. ¿Cómo acceder a ambas direcciones de ManyToManyField en Django Admin?
- 26. Django admin list_display property usage
- 27. Cómo filtrar queryset en changelist_view en django admin?
- 28. Django admin ordenar por orden
- 29. Cómo verificar la transición de valores en Django (django-admin)?
- 30. Autor automático en Django admin
Encontré esto en la red: https://github.com/pydanny/django-wysiwyg. ¿Tiene algo de bueno? – Adnan
No lo he usado pero estoy seguro de que también hace el trabajo. –
¿creo un forms.py porque actualmente no tengo uno? – Adnan