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下


更改路径



最终效果


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