一、Django Markdown富文本app插件的实现
- 安装django-markdown-deux
要实现Django Markdown富文本app插件,首先需要安装一个Markdown库,这里我们使用django-markdown-deux库。可以通过命令行在虚拟环境中安装:
pip install django-markdown-deux
- 配置settings.py
在settings.py文件中添加'markdown_deux'作为INSTALLED_APPS的一项。
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'markdown_deux',
'yourapp',
]
- 创建Model
下面我们来创建一个Article的Model类,用来保存文章的标题和正文。
from django.db import models
from markdown_deux import markdown
class Article(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
def __str__(self):
return self.title
def get_content_as_markdown(self):
return markdown(self.content)
- ModelForm类
在forms.py文件中编写一个ModelForm类。
from django import forms
from markdown_deux import MarkdownEditor
from .models import Article
class ArticleForm(forms.ModelForm):
content = forms.CharField(widget=MarkdownEditor())
class Meta:
model = Article
fields = '__all__'
- View函数
下面来编写一个view函数,用来处理新建和编辑文章的请求。
from django.shortcuts import render, redirect
from .forms import ArticleForm
from .models import Article
def new_article(request):
if request.method == 'POST':
form = ArticleForm(request.POST)
if form.is_valid():
article = form.save()
return redirect('article_view', pk=article.pk)
else:
form = ArticleForm()
return render(request, 'new_article.html', {'form': form})
def edit_article(request, pk):
article = Article.objects.get(pk=pk)
if request.method == 'POST':
form = ArticleForm(request.POST, instance=article)
if form.is_valid():
form.save()
return redirect('article_view', pk=article.pk)
else:
form = ArticleForm(instance=article)
return render(request, 'edit_article.html', {'form': form})
- 模板文件
最后,编写一个用于提交和修改文章的模板文件,包含一个fieldset名称为“正文”的Textarea输入框。并在其中添加Markdown富文本编辑器。
{% extends "base.html" %}
{% block content %}
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">提交</button>
</form>
{% endblock %}
{% block extra_head %}
{{ form.media }}
{% endblock %}
- 示例说明
例子1: 在new_article.html
文件中使用Markdown富文本编辑器。模板文件内容如下:
{% extends "base.html" %}
{% block content %}
<h1>新建文章</h1>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">提交</button>
</form>
{% endblock %}
{% block extra_head %}
{{ form.media }}
{% endblock extra_head %}
例子2: 在edit_article.html
文件中使用Markdown富文本编辑器。模板文件内容如下:
{% extends "base.html" %}
{% block content %}
<h1>{{ form.instance.title }}</h1>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">提交</button>
</form>
{% endblock %}
{% block extra_head %}
{{ form.media }}
{% endblock extra_head %}
这样,就完成了Django Markdown富文本app插件的实现。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:漂亮的Django Markdown富文本app插件的实现 - Python技术站