Django 02 項目內容的編輯

一、創建一個新的模塊

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下


更改路徑



最終效果


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章