目前Case的網站現在希望可以愈來愈多自己可以更改的介面,所以決定紀錄一下django怎麼去實作這樣的需求
再django的世界裡,有時候使用者會希望能像打網誌一樣的從後端編輯自己的文章,而這時我們只能透過修改原本的html template來慢慢的刻板面,有沒有像網誌一樣的文本編輯器能幫助我們做到這件事呢?
而django-checkditor就能幫助我們完成,所以筆者在這邊紀錄一下作法
(這篇是建立再有基本django的架構來描述的,如果有看不懂之處都可以下方留言或寄信給我,謝謝)
首先我們必須確定當前的環境有django-ckeditor,
Django==1.11.3django-ckeditor==5.3.0django-ipware==1.1.6django-jet==1.0.6django-js-asset==0.1.1
如果沒有記得用pip去安裝,接著我們先新增一個model class,用來表示你儲存的文章,
model.py
from ckeditor.fields import RichTextFieldclass Test(models.Model):title = models.CharField(u’標題’,default=’’,max_length=10)content = RichTextField(u’內容’, default=’’, null=True, blank=True)updated = models.DateTimeField(u’更新時間’, auto_now=True)def __str__(self):return “test”class Meta:managed = Trueverbose_name = u”文章”verbose_name_plural =u”文章”
做完記得migrate
接著到template找到相對應你想要貼出文章的html
加入
for testcontent in test%}{{testcontent.content|safe}}{%endfor%}
上方的safe很重要,詳情可以看
stack overflow
views.py要把這model的資料輸出
test = XXX.models.Test.objects.all()[0] # XXX為你的APPobje
筆者再render時都是直接用locals這個函數幫我把所有data輸出,所以再views.py有自己特殊寫法的要注意一下
最後再到admin.py去將這個model註冊到後台,
admin.site.register(models.Test)
後台顯示會像這樣
然後儲存結果就會印到html上!