一个简单的django应用程序来编辑标记文本。

django-mdeditor的Python项目详细描述


django mdeditor

ENVENVENVENVENVLICENSE

django mdeditordjango基于Editor.md的标记编辑器插件应用程序。

django mdeditor灵感来自伟大的django-ckeditor

注意:对于标记页呈现问题,建议使用后端呈现。由于Editor.md已经很长时间没有更新,因此需要调试一些错误和兼容性问题。当然,前端学生可以选择。

功能

  • 几乎是editor.md功能
    • 支持标准降价/普通降价和gfm(github风格的降价);
    • 全功能:实时预览、图像(跨域)上传、预格式化文本/代码块/表插入、搜索替换、主题、多种语言;
    • 降价附加服务:支持TOC(目录)、emoji;
    • 支持tex(基于katex的乳胶表达式)、标记扩展语法流程图和序列图;
  • can constom editor.md工具栏
  • mdtextfield字段是为模型提供的,可以直接在django管理中显示。
  • 为窗体和模型窗体提供了mdtextform字段。
  • mdeditorwidget是为管理自定义小部件提供的。

快速启动

  • 安装。
    pipenv install django-mdeditor
    # or
    pip install django-mdeditor
  • mdeditor添加到已安装的应用程序设置中,如下所示:
INSTALLED_APPS=[...'mdeditor',]
  • 将“媒体”URL添加到如下设置:
MEDIA_ROOT=os.path.join(BASE_DIR,'uploads')MEDIA_URL='/media/'

在项目中为媒体文件创建文件夹uploads/editor

  • 将URL添加到您的URL,如下所示:
fromdjango.conf.urlsimporturl,includefromdjango.conf.urls.staticimportstaticfromdjango.confimportsettings...urlpatterns=[...url(r'mdeditor/',include('mdeditor.urls'))]ifsettings.DEBUG:# static files (images, css, javascript, etc.)urlpatterns+=static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)
  • 像这样写你的模型:
fromdjango.dbimportmodelsfrommdeditor.fieldsimportMDTextFieldclassExampleModel(models.Model):name=models.CharField(max_length=10)content=MDTextField()
  • admin.py

    中注册您的模型
  • 运行python manage.py makemigrationspython manage.py migrate来创建模型。

  • 登录管理员,您可以看到如下标记编辑器文本字段:

用法

使用markdown

编辑模型中的字段

使用markdown编辑模型中的字段,我们只需将模型的TextField替换为MDTextField

fromdjango.dbimportmodelsfrommdeditor.fieldsimportMDTextFieldclassExampleModel(models.Model):name=models.CharField(max_length=10)content=MDTextField()

管理员在后台,会自动显示标记编辑富文本。

在前端模板中使用,您可以这样使用:

{%loadstaticfiles%}<!DOCTYPEhtml><htmllang="en"><head><metahttp-equiv="Content-Type"content="text / html; charset = utf-8"/></head><body><formmethod="post"action="./">{%csrf_token%}{{form.media}}{{form.as_p}}<p><inputtype="submit"value="post"></p></form></body></html>

使用markdown

编辑表单中的字段

使用markdown编辑表单中的字段,使用MDTextFormField而不是forms.CharField,如下所示:

frommdeditor.fieldsimportMDTextFormFieldclassMDEditorForm(forms.Form):name=forms.CharField()content=MDTextFormField()

ModelForm可自动将对应的模型字段转换为表单字段,可正常使用:

classMDEditorModleForm(forms.ModelForm):classMeta:model=ExampleModelfields='__all__'

使用admin

中的markdown小部件

在管理员中使用标记小部件,例如:

fromdjango.contribimportadminfromdjango.dbimportmodels# Register your models here.from.importmodelsasdemo_modelsfrommdeditor.widgetsimportMDEditorWidgetclassExampleModelAdmin(admin.ModelAdmin):formfield_overrides={models.TextField:{'widget':MDEditorWidget}}admin.site.register(demo_models.ExampleModel,ExampleModelAdmin)

自定义工具栏

将以下配置添加到settings

MDEDITOR_CONFIGS={'default':{'width':'90% ',# Custom edit box width'heigth':500,# Custom edit box height'toolbar':["undo","redo","|","bold","del","italic","quote","ucwords","uppercase","lowercase","|","h1","h2","h3","h5","h6","|","list-ul","list-ol","hr","|","link","reference-link","image","code","preformatted-text","code-block","table","datetime""emoji","html-entities","pagebreak","goto-line","|","help","info","||","preview","watch","fullscreen"],# custom edit box toolbar 'upload_image_formats':["jpg","jpeg","gif","png","bmp","webp"],# image upload format type'image_folder':'editor',# image save the folder name'theme':'default',# edit box theme, dark / default'preview_theme':'default',# Preview area theme, dark / default'editor_theme':'default',# edit area theme, pastel-on-dark / default'toolbar_autofixed':True,# Whether the toolbar capitals'search_replace':True,# Whether to open the search for replacement'emoji':True,# whether to open the expression function'tex':True,# whether to open the tex chart function'flow_chart':True,# whether to open the flow chart function'sequence':True,# Whether to open the sequence diagram function'watch':True,# Live preview'lineWrapping':False,# lineWrapping'lineNumbers':False# lineNumbers}}

反馈

欢迎使用和反馈!

你可以创建一个issue或加入qq群。

参考

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
我可以用C++代码使用java代码吗?   java使用JSR303在派生类中提供更具体的约束   java在这个查找唯一路径数算法中我做错了什么?   java如何为2个不同的服务提供商使用2个不同的SSL证书?   java在Gridview上绘制文本   java使用连接for循环构建字符串名   java StringBuilder拆分无法处理某些文件   java事件关注EditText   Java Web Start“找不到URL的缓存资源”   java程序从命令行运行的速度比在Eclipse中慢   java为什么HttpServletRequest会截断#字符上的url输入?   java自定义折叠工具栏平滑标题大小调整   使用Mockito对安卓 java中调用另一个静态函数的函数进行单元测试   http在java客户机中使用cachecontrol头   java如何使用。是否使用Delimiter从输入文件中排除标点符号和数字?   使用上下文作为参数/参数的java   java更有效地从Jar中提取文件   java为多个JButton提供相同的actionListener