安装ckeditor
pip install django-ckeditor
如图:
安装pillow
pillow是python的一个图像处理库
pip install pillow
如图:
在项目seetings.py中配置ckeditor
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'ckeditor',
'ckeditor_uploader',
]
媒体文件配置并在项目根目录创建media文件夹
MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(base_DIR, "media") CKEDITOR_UPLOAD_PATH = 'upload/'
同样在项目urls.py中配置
from django.conf import settings
from django.conf.urls.static import static
from django.urls import path, include
urlpatterns = [
path('ckeditor/', include('ckeditor_uploader.urls')),
]+static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)
创建app
django-admin.py startapp user django-admin.py startapp index
接下来在 settings.py 中找到INSTALLED_APPS这一项,如下:
INSTALLED_APPS = [
'user',
'index',
]
在APP里分别新建urls.py并修改项目的urls.py
urlpatterns = [
path('', include('index.urls')),
path('user/',include('user.urls')),
]
在user.models.py创建模型
from django.db import models
from django.contrib.auth.models import AbstractUser
class Admin(AbstractUser):
nickname = models.CharField('昵称', max_length=10)
phone = models.CharField('手机', max_length=20)
mail = models.CharField('邮箱', max_length=20)
createDate = models.DateField('创建时间', auto_now_add=True)
在index.models.py创建模型
class Blog(models.Model):
title = models.CharField(max_length=50)
author = models.ForeignKey(Admin, on_delete=models.CASCADE, verbose_name='作者')
createdTime = models.DateTimeField('发布时间', auto_now_add=True)
content=RichTextUploadingField(verbose_name='正文')
class meta:
verbose_name = '文章'
verbose_name_plural = '文章'
def __str__(self):
return self.title
在项目MyBlog.setting.py中添加自定义用户模型
AUTH_USER_MODEL = 'user.Admin'
数据库迁移
python manage.py makemigrations # 让 Django 知道我们在我们的模型有一些变更 python manage.py migrate # 创建表结构
创建admin超级用户
# python manage.py createsuperuser Username (leave blank to use 'root'): admin Email address: admin@runoob.com Password: Password (again): Superuser created successfully.
在项目根目录创建templates
login.html
{% load static %}
登录
系统登录
© 2018
addBlog.html
{% load static %}
Ckeditor编辑器
在index.admin.py注册模型
from django.contrib import admin
from index.models import Blog
@admin.register(Blog)
class BlogAdmin(admin.ModelAdmin):
list_display = ('title','content')
fields = ('title','content')
前端使用ckeditor需要用到django的forms,在index应用里新建一个forms.py
from ckeditor_uploader.widgets import CKEditorUploadingWidget
from django import forms
from index.models import Blog
class BlogForm(forms.ModelForm):
content=forms.CharField(widget=CKEditorUploadingWidget,label='详情',required=True)
class meta:
model=Blog
fields = "__all__"
index.views.py编写登录、发表博客视图函数
from index.models import Blog
from user.models import Admin
def loginView(request):
return render(request, 'login.html')
def addBlogView(request):
blogForm=BlogForm()
return render(request, 'addBlog.html',{'blogForm':blogForm})
编辑index.urls
urlpatterns = [
path('login/', views.loginView),
path('addBlog/', views.addBlogView),
]
登录验证视图函数user.views
from django.contrib import auth
from django.shortcuts import render, redirect
def loginCheckView(request):
username = request.POST['username']
password = request.POST['password']
user = auth.authenticate(username=username, password=password)
if not user:
res = 'fail'
return render(request, 'login.html', locals())
else:
auth.login(request, user)
res = 'ok'
request.session['user'] = username
return redirect("/user")
编辑user.urls
urlpatterns = [
path('loginCheck/', views.loginCheckView),
]
使用超级用户登录后台
添加博客
上传图片
成功插入图片
打开项目media文件夹下的upload



