一、創建一個新的模塊
1.在新的模塊中添加新的models.py,用來在數據庫創建新的表來記錄博客的基本信息
#usr/bin/python
#-*-coding:utf-8-*-
from django.db import models
from blog_user.models import BlogUser
class Blog(models.Model):
title=models.CharField(max_length=30,null=True)#標題
context=models.CharField(max_length=500,null=True)#內容
create_date=models.DateTimeField(null=True)#創建時間 默認爲當前時間
#關聯主外鍵
blogUser=models.ForeignKey('blog_user.BlogUser',on_delete=None)
2.在setting.py中找到INSTALLED_APPS啓用blog模塊
3.CTRL+ALT+R運行shell命令創建表
4.在blog下創建新的視圖views.py和urls.py
views.py 要求:發佈成功獲取用戶發佈標題,內容,時間,id保存在數據庫中,
發佈失敗重新進入發佈頁面
#usr/bin/python
#-*-coding:utf-8-*-
from django.shortcuts import render, redirect,reverse
from blog.models import Blog
from datetime import datetime
from blog_user.models import BlogUser
def saveblog(request):
if request.method=='GET':
#判斷 user 是否在session中
if 'user' in request.session:
#登錄 跳轉到a頁面
return render(request, 'user/saveblog.html', {})
else:
#沒有登錄 記錄下目標頁
session=request.session
session["uri"]=request.get_raw_uri()
return redirect(reverse('user:login'))
elif request.method=='POST':
#保存數據庫 創建模型 獲取設置屬性值 save(
blog=Blog()
#獲取發佈的標題內容日期
blog.title=request.POST.get('title')
blog.context=request.POST.get('context')
blog.create_date=datetime.now()
#獲取當前用戶
session=request.session
#獲取登錄時保存的用戶id
u_id=session.get('u_id')
blog.blogUser_id=u_id
try:
blog.save()
#保存成功 回覆用戶
return redirect(reverse('user:welcome2'))
except:
return render(request,'user/saveblog.html',{'error','保存失敗...'})
urls.py
#usr/bin/python
#-*-coding:utf-8-*-
from django.urls import path
from blog import views
app_name='blog'
urlpatterns=[
path('saveblog',views.saveblog),
]
然後在exercise/urls下配置路徑
from django.contrib import admin
from django.urls import path,include
urlpatterns = [
path('admin/', admin.site.urls),
path('user/',include('zhaofan_user.urls',namespace='user')),
path('blog/',include('blog.urls',namespace="blog"))
]
修改a.html爲saveblog.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form method="post">
{% csrf_token %}
<p>
請輸入標題:<input type="text" name="title">
</p>
<p>
請輸入內容:<textarea name="context"></textarea>
</p>
<p>
<input type="submit" value="確認發佈">
</p>
</form>
</body>
</html>
簡單的發佈頁面爲
二、文件上傳,富文本編輯器
我們首先要明白files的方法
文件對象:
request.FILES.get() #獲取上傳的文件對象
wenjianduixiang.name #文件名
文件對象.size #文件字節
文件對象的.chunks( ) #這個方法裏面存放了上傳的文件內容
form表單裏面要添加一個特殊的參數 enctype="multipart/form-data" #文件的傳輸配置
1.創建一個html文件用於上傳文件
選擇之前的b頁面進行操作
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
博客主頁面,可以不登錄
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
<p>
用戶名 <input type="text" name="uname">
</p>
<p>
上傳圖片 <input type="file" name="myfile">
</p>
<p>
<input type="submit" value="上傳">
</p>
</form>
</body>
</html>
在blog_user/urls.py下修改b函數
def b(request):
if request.method=='GET':
return render(request, 'user/b.html', {})
elif request.method=='POST':
#獲取上傳的文件
myfile=request.FILES.get('myfile')
#配置存放路徑爲files
path=os.path.join('files',myfile.name)
#打開
upfile=open(path,'wb+')
#循環myfile裏面包含用戶上傳的文件
for row in myfile:
upfile.write(row)
#關閉
upfile.close()
return HttpResponse('上傳成功')
(wb+:是爲讀寫建立一個新的二進制文件
rb+:是爲讀寫打開一個二進制文件)
在exercise項目下創建模塊files要接收上傳的內容
2.富文本
<1>下載富文本編輯器
下載鏈接:
http://ueditor.baidu.com/website/download.html#ueditor
<2>將下載的文件,全部存放在exercise項目裏面static下的ueditor文件夾中
<3>在ueditor裏面找到_examples文件夾裏面有一個名爲index.html的文件我們在網頁裏面打開,找一個自己想要的類型的富文本編輯器
接着查看源代碼,也可以打開這個頁面的html,我們需要的是裏面的代碼:
打開源代碼將其中的script代碼拿出來放入b.html頁面並進行路徑修改
然後將其中的form代碼放入b.html
進入editor_api.js代碼頁修改路徑
<4>在blog下導入文件
修改b.html路徑
<5>配置路徑blog/urls
將config.json複製到跟目錄 達到以下效果
將文件files 放入static下
更改路徑
最終效果