Django使用Markdown详细方法(不在django自带的后台应用)
1、创建Django项目
如果是Django2版本修改如下代码:
按照下面两个方法进行解决(Django2版本需要按照A、B方法改,Django3版本只需要修改A方法)
A:找到控制台的base.py文件或找到以下目录:
/venv/lib/site-packages/django/db/backends/mysql/base.py
把一下代码进行注释:
if version < (1, 3, 13):
raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you have %s.' % Database.__version__)
B:找到控制台的operations.py文件,或找到以下目录:
venv\lib\site-packages\django\db\backends\mysql\operations.py
把query = query.decode(errors='replace')改成query = query.encode(errors='replace')
2、修改Settings.py
ALLOWED_HOSTS = ["*"]
#添加mysql基础配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
# 数据库引擎
'NAME': 'FCK',
# 数据库名字
'USER': 'root',
# 链接数据库用户名
'PASSWORD': 'Sloveb55555..',
# 链接数据库密码
'HOST': '127.0.0.1',
# 数据库链接地址
'POST': '3306',
# 数据库链接端口
}
}
#修改如下代码
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
USE_TZ = False
# 添加如下代码
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static')
]
MEDIA_ROOT = os.path.join(BASE_DIR, 'static')
MEDIA_URL = 'static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static/media/')
3、修改主目录里找到__init__.py写入如下代码:
# 使用mysql数据库驱动
import pymysql
pymysql.install_as_MySQLdb()
#安装pymysql驱动
4、创建APP:python manage.py startapp Markeditor
# 在models.py文件里创建表:
from ckeditor_uploader.fields import RichTextUploadingField
class Mark(models.Model):
booksid = models.AutoField(primary_key=True, unique=True, null=False)
booksname = models.CharField(max_length=16, null=False, unique=True)
#要想使用Markdown就必须用MDTextField()
content = MDTextField()
class Meta:
db_table = 'Mark'
#然后Settings.py文件里的INSTALLED_APPS里注册Markeditor: 'Markeditor.apps.MarkeditorConfig',
#然后在控制台进行生成
python manage.py makemigrations
python manage.py migrate
5、在Settings.py文件
INSTALLED_APPS = [
#加入如下代码
'mdeditor',
]
6、创建static文件夹,然后在static文件夹里创建editor_uploads文件夹
执行安装:
pip install Pillow
pip install markdown
python manage.py collectstatic
执行完之后会在目录的static文件夹里看到media文件夹,这里就是把markdown复制出来。
7、在主目录找到urls.py文件里添加如下代码:
from django.conf import settings
from django.conf.urls.static import static
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
#这个是导入markdown的路径
path('mdeditor/', include('mdeditor.urls')),
#这个是自己创建的APP路径
path('editor/', include(('Markeditor.urls', 'editor'), namespace='editor')),
]
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
8、在Markeditor文件夹里创建urls.py文件之后添加如下代码
from django.urls import path
from Markeditor import views
urlpatterns = [
path('editblog/', views.edit_blog, name='edit_blog'),
]
9、在views.py文件里添加如下代码,或者直接在urls.py文件里用鼠标放在views.edit_blog上直接Create也可以
from django.shortcuts import render
# Create your views here.
def edit_blog(request):
if request.method == "GET":
return render(request, 'a.html')
elif request.method == "POST":
return None
10、在Markeditor文件夹里创建templates模板文件夹然后接着创建a.html复制一下代码:
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" href="{% static 'mdeditor/css/editormd.min.css' %}"/>
</head>
<body>
<form method="post">
<div class="form-group">
<div>
<label>图书名称</label>
<input type="text" name="booksname" placeholder="请输入图书名称">
</div>
<label>图书简介</label>
<div id="editormd">
<textarea style="display:none;" name="reply" placeholder="请输入图书简介"></textarea>
</div>
</div>
<button type="submit" class="btn btn-primary">回复</button>
</form>
<script type="text/javascript" src='{% static "mdeditor/js/jquery.min.js" %}'></script>
<script type="text/javascript" src='{% static "mdeditor/js/editormd.min.js" %}'></script>
<script type="text/javascript">
$(function () {
var editor = editormd("editormd", {
path: "{% static 'mdeditor/js/lib/' %}", // Autoload modules mode, codemirror, marked... dependents libs path
{#width : "1000px", //设置宽度#}
placeholder: "请输入处理回复 ...", // 输入框提示文字
height: 400,
syncScrolling: "single"
});
/*
// or
var editor = editormd({
id : "editormd",
path : "../lib/"
});
*/
});
</script>
</body>
</html>
11、在控制台执行:python manage.py runserver
在浏览器直接访问:http://127.0.0.1:8000/editor/editblog/ ,就可以看到Markdown的插件了,如果想更改markdown里的插件或者更改宽度和高度可以在a.html文件下面的js 里修改。