我正在为我的项目使用django Grappelli皮肤.
我有一个带有表格内联函数的ModelAdmin.
当页面加载时,我使用extra = 0来防止自动插入空白行.它工作正常.
现在,当我单击+号以插入新行时,将加载该行,但是tinymce文本字段不可编辑.
有谁知道是什么原因以及如何解决这个问题?
看完文件后:
http://django-grappelli.readthedocs.org/en/latest/customization.html#using-tinymce
我注意到:
由于隐藏的空格式,将TinyMCE与Inlines一起使用会有点棘手.您需要编写自定义模板并使用内联回调
onInit:从空表单中删除TinyMCE实例.
onAfterAdded:从表单初始化TinyMCE实例.
onBeforeRemoved:从表单中删除TinyMCE实例.
默认情况下不支持带有内联的TinyMCE.
有什么样的吗?我注意到我需要更改它是一个TinyMCE功能.
我有django-tinymce为管理页面工作.现在在管理页面之外,当使用模型时,我希望加载TinyMCE编辑器并向用户显示,但这并没有发生.我所看到的只是一个纯文本区域.但它适用于管理页面.
from tinymce.models import HTMLField
class Punch(models.Model):
discussion = HTMLField()
class PunchForm(forms.ModelForm):
class Meta:
model = Punch
Run Code Online (Sandbox Code Playgroud)
我可以用firebug看到TinyMCE片段已添加到HTML中:

但是我在控制台中收到一条错误消息:
ReferenceError: tinyMCE is not defined
Run Code Online (Sandbox Code Playgroud)
这没有任何意义,为什么管理页面没有找到TinyMCE的问题?此外,我甚至将自己添加到base.html:
<script type="text/javascript" src="{{ STATIC_URL }}tiny_mce/tiny_mce.js"></script>
Run Code Online (Sandbox Code Playgroud)
服务器也可以加载它:
[21/Apr/2013 13:42:40] "GET /static/tiny_mce/tiny_mce.js HTTP/1.1" 304 0
Run Code Online (Sandbox Code Playgroud)
那可能是什么问题呢?
我有一个Django网站,我用它django-tinymce来编辑带有TinyMCE控件的HTML字段.
TinyMCE实际上给了我一种编辑HTML的WYSIWYG方式.我的问题是,我可以直接编辑底层HTML吗?我在想,也许有一些按钮我可以在TinyMCE中切换"WYSIWYG模式"和"原始html模式".有吗?如果没有,是否有任何优雅的方式来编辑HTML?
它不会保存.
ed.execCommand('mceInsertContent', false, h);media.js中的输出:<img src="http://127.0.0.1:8000/media/admin/tinymce/jscripts/tiny_mce/plugins/media/img/trans.gif" class="mceItemFlash" title="src:'http://www.youtube.com/v/b7wJejHIFEc&feature',width:'376',height:'302'" width="376" height="302" align="" />当我按下插入/提交时.<p> </p>移动嵌入的东西应该是什么.这是我目前的tinymce初始化脚本:
tinyMCE.init({
// General
mode: 'none',
theme: 'advanced',
skin: 'grappelli',
dialog_type: 'window',
browsers: 'gecko,msie,safari,opera',
editor_deselector : 'mceNoEditor',
language: "en",
relative_urls: false,
plugins: 'advimage,advlink,fullscreen,paste,searchreplace,grappelli,grappelli_contextmenu,media',
// callbackss
file_browser_callback: 'CustomFileBrowser',
// Layout
width: 410,
height: 500,
indentation: '10px',
object_resizing: false,
// Accessibility
cleanup_on_startup: true,
accessibility_warnings: false,
remove_trailing_nbsp: true,
fix_list_elements : true,
remove_script_host: true,
// theme_advanced
theme_advanced_toolbar_location: "top",
theme_advanced_toolbar_align: "left",
theme_advanced_statusbar_location: …Run Code Online (Sandbox Code Playgroud) TL; DR - Tinymce的格式工具栏不显示.django生成的一行html似乎很可疑,但我不确定它为何就是这样.这是python 3.4和django 1.8.
我这样做了:
我正在使用django-tinymce默认值.
INSTALLED_APPS = (
...,
'django.contrib.staticfiles',
...,
'tinymce',
...
)
Run Code Online (Sandbox Code Playgroud)
...
url(r'^tinymce/', include('tinymce.urls'))
...
if settings.DEBUG:
urlpatterns += patterns('django.views.static',
(r'^media/(?P<path>.*)',
'serve',
{'document_root': settings.MEDIA_ROOT}),)
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Run Code Online (Sandbox Code Playgroud)
from tinymce.models import HTMLField
class BlogEntry(models.Model):
...
#article_body = HTMLField()
article_body = models.TextField()
Run Code Online (Sandbox Code Playgroud)
(文档建议HTMLField.其他来源建议使用TextField.到目前为止,结果是相同的.)
from tinymce.widgets import TinyMCE
class BlogEntryForm(forms.ModelForm)
article_body = forms.CharField(
widget=TinyMCE(#mce_attrs={
#'plugin_preview_pageurl': reverse('tinymce-preview', "blog")},
attrs={
'cols': 80, 'rows': 30,
'placeholder': 'contenu',
'class': 'lkz-input'}),)
Run Code Online (Sandbox Code Playgroud)
{% …Run Code Online (Sandbox Code Playgroud) 我将 django-tinymce 设置为与 admin 一起工作,就像描述的文档一样
在设置中
INSTALLED_APPS = [ ..., 'tinymce',]
Run Code Online (Sandbox Code Playgroud)
在我添加的模型中
from tinymce.models import HTMLField
content = HTMLField()
Run Code Online (Sandbox Code Playgroud)
并在网址中
urlpatterns = [ ...., url(r'^tinymce/', include('tinymce.urls')),]
Run Code Online (Sandbox Code Playgroud)
但是我不知道如何添加图标和插件!我做了很多研究,但找不到任何有用的东西。
我需要一个全功能编辑器。
在尝试了各种方法让 TinyMCE 作为我在 Django 管理中的 HTML 内容的编辑器后,我终于让它与本教程一起使用 - https://github.com/ITCase-django/django-tinymce-4。
但是,使用这种方法,我必须拥有 Django 1.9 和“Grappelli”管理皮肤,而我宁愿避免使用。我试图删除它,但它也删除了 TinyMCE。
我也尝试使用HTMLField()from django-tinymcepackage,但这种方式得到了非常粗糙的编辑器,只有少数选项(粗体、斜体、列表等等)。
是否有任何“最佳实践”让 Django(最新版本)管理具有成熟的 TinyMCE 4?
编辑:在尝试了各种选项(例如 HTMLField() 的高级主题)之后,我又回到了开始使用 Grappelli 主题的地方。我想我可以忍受这个主题一段时间。
所以我试图让文件浏览器在django中使用tinymce.Evrything很好用tinymce,漂亮的花哨文本编辑器.当我尝试打开文件浏览器时,我在/ admin/filebrowser/browse /错误查找上传文件夹(MEDIA_ROOT + DIRECTORY)时收到了ImproperlyConfigured.也许它不存在?我没有从控制台中得到任何错误,据我所知它应该寻找/ media/filebrowser /肯定存在
python manage.py test filebrowser give me this:
FAIL: test_directory (filebrowser.tests.settings.SettingsTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/nada/costumeshoppe/filebrowser/tests/settings.py", line 29, in test_directory
self.assertEqual(os.path.exists(os.path.join(MEDIA_ROOT,DIRECTORY)), 1)
Run Code Online (Sandbox Code Playgroud)
AssertionError:False!= 1
我的设置:
STATIC_ROOT = ROOT_PATH +'/public/static/'
STATIC_URL = '/static/'
MEDIA_ROOT = ROOT_PATH + '/public/media/'
MEDIA_URL = '/media/'
TINYMCE_JS_ROOT = '/static/tiny_mce/'
TINYMCE_JS_URL = os.path.join(STATIC_URL, "tiny_mce/tiny_mce_src.js")
TINYMCE_DEFAULT_CONFIG = {
'plugins': "table,spellchecker,paste,searchreplace,styles",
'theme': "advanced",
}
Run Code Online (Sandbox Code Playgroud)
我的网址:
if settings.DEBUG:
urlpatterns += patterns('',
url(r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT,})
)
urlpatterns += staticfiles_urlpatterns()
Run Code Online (Sandbox Code Playgroud)
我正在调试模式下运行,不知道这是不是问题,确实有一个奇怪的问题,我可以使用静态URL加载静态文件,但它们必须在媒体目录中,尽管文件浏览器静态文件在我的静态文件位置修复了一些安装问题,但将这些文件放在媒体位置也没有改变任何东西.有什么需要做的才能让它发挥作用?
我已经开始在我的 Django 项目中使用 tinymce。我需要启用一些与 django-tinymce 捆绑在一起的插件(例如,模板)。因此,在我的 settings.py 中,我添加了以下配置:
TINYMCE_DEFAULT_CONFIG = {
'theme': 'advanced', 'relative_urls': False,
'plugins': 'template',
'toolbar': 'template'
}
MAX_UPLOAD_SIZE = 512000
Run Code Online (Sandbox Code Playgroud)
认为他们可能会启用模板插件,但似乎没有。如何在 django-tinymce 中启用插件?我没有在任何地方找到这个。
感谢您的建议!
更新:
我想我误解了配置是如何完成的。我用一些配置创建了一个 config.js:
tinyMCE.init({
theme: 'advanced',
plugins: 'template',
height: '350px',
width: '1000px'
});
Run Code Online (Sandbox Code Playgroud)
然后,我从 MyModelAdmin.Media 链接它。(我正在从 django-admin 加载编辑器。)
class MyModelAdmin(ModelAdmin):
class Media:
from django.conf import settings
js = (
settings.STATIC_URL + 'tiny_mce/config.js',
)
Run Code Online (Sandbox Code Playgroud)
config.js 似乎正确加载,但我看不出任何区别。
使用django-tinymce,我之前已经成功将TinyMCE嵌入了Admin中。但是,以前端形式嵌入它似乎对我不起作用。
我有一个表格是modelForm。它不会添加任何额外的字段(“ comment”和“ statement”是唯一使用的字段,它们存在于模型中)。在textarea字段中,我想使用TinyMCE的那种形式的“ comment”。我尝试了以下方法:
class EntryForm(forms.ModelForm):
comment = forms.CharField(widget=TinyMCE(attrs={'cols': 80, 'rows': 30}, mce_attrs=TINYMCE_USER_CONFIG))
class Meta:
model = Entry
fields = ['statement','comment',]
Run Code Online (Sandbox Code Playgroud)
和
class EntryForm(forms.ModelForm):
class Meta:
model = Entry
fields = ['statement','comment',]
def __init__(self, *args, **kwargs):
super(EntryForm, self).__init__(*args, **kwargs)
self.fields['comment'].widget = TinyMCE(attrs={'cols': 80, 'rows': 15}, mce_attrs=TINYMCE_USER_CONFIG,)
Run Code Online (Sandbox Code Playgroud)
和
class EntryForm(forms.ModelForm):
class Meta:
model = Entry
fields = ['statement','comment',]
class Media:
js = ('/media/tinymce/jscripts/tiny_mce/tiny_mce.js',
'/sitemedia/js/tinymce_setup.js',)
Run Code Online (Sandbox Code Playgroud)
在HEAD我放置的html标签中{{ form.media }}(form在视图和模板中调用了表单)。我还使用Grappelli和Filebrowser进行管理。
有人可以解释一下我所缺少的内容或使其工作的过程吗?非常感谢!
django ×10
django-tinymce ×10
tinymce ×9
python ×4
django-admin ×2
javascript ×1
templates ×1
tinymce-4 ×1