基于django的个人博客网站建立(五)
基于django的个人博客网站建立(五)
前言
网站效果可点击这里访问
之前鸽了两天,今天继续再写点
主要内容
今天加了个展示照片的功能,就叫他生活记录吧
先建表
class Record(models.Model):
title = models.CharField(max_length=128)
content = models.TextField()
picture = models.CharField(max_length=128)
creationTime = models.DateTimeField(auto_now_add=True)
主要功能就是为了上传一张图片,并添加标题,内容来记录一些有趣的事情
于是在后台要添加图片的上传
借用了别人点击上传图片后显示图片的代码
<input type="file" id="chooseImage" accept="image/gif,image/jpeg,image/jpg,image/png,image/svg" name="picture" class="form-control" aria-invalid="false">
<!-- 保存用户自定义的背景图片 -->
<img id="cropedBigImg" value='custom' alt="请添加图片" data-address='' title="我的图片"/>
<script>
$('#chooseImage').on('change',function(){
var filePath = $(this).val(), //获取到input的value,里面是文件的路径
fileFormat = filePath.substring(filePath.lastIndexOf(".")).toLowerCase()
src = window.URL.createObjectURL(this.files[0]); //转成可以在本地预览的格式
// 检查是否是图片
if( !fileFormat.match(/.png|.jpg|.jpeg/) ) {
alert('请选择图片');
return;
}
$('#cropedBigImg').attr('src',src);
});
</script>
效果为:

处理的视图函数为:
@auth
def publish_record(request):
if request.method == 'GET':
return render(request, 'backend/publish_record.html')
if request.method == 'POST':
if request.FILES:
myFile = None
for i in request.FILES:
myFile = request.FILES[i]
if myFile:
dir = os.path.join(
os.path.join(
os.path.join(
os.path.join(
BASE_DIR,
'statics'),'assets'),'images'),
'record')
destination = open(os.path.join(dir, myFile.name),
'wb+')
for chunk in myFile.chunks():
destination.write(chunk)
destination.close()
title = request.POST.get('title')
content = request.POST.get('content')
models.Record.objects.create(title=title,content=content,picture=myFile.name)
else:
messages.error(request,'输入信息有误')
return redirect('/backend/publish_record')
主要是把图片放到一个固定的文件夹下,之后在页面显示时路径的前缀是固定的
在前端显示为

接下来设置默认的访问错误页面:
在url.py中添加
handler403 = views.permission_denied
handler404 = views.page_not_found
handler500 = views.page_error
然后编写对应的视图处理函数
def permission_denied(request):
return render(request,'show/403.html')
def page_not_found(request):
return render(request, 'show/404.html')
def page_error(request):
return render(request, 'show/500.html')
然后随意访问一个不存在的url:

最后加一个关于界面,也就是一个简单的介绍,内容也用markdown编辑
首先后台添加一个关于内容的输入页面

在后台通过.md文件的方式存储内容
def about_edit(request):
if request.method == 'GET':
dir = os.path.join(
os.path.join(
os.path.join(
os.path.join(
BASE_DIR,
'statics'), 'assets'), 'about'),
'about.md')
with open(dir,'r+') as f:
content = f.read()
return render(request,'backend/about_edit.html',{'content':content})
if request.method == 'POST':
dir = os.path.join(
os.path.join(
os.path.join(
os.path.join(
BASE_DIR,
'statics'), 'assets'), 'about'),
'about.md')
content = request.POST.get('content')
with open(dir,'w+') as f:
f.write(content)
return redirect('/backend/about_edit')
这样就可以在前端显示关于页面的内容了
def about(request):
if request.method == 'GET':
all_type = models.ArticleType.objects.all()
dir = os.path.join(
os.path.join(
os.path.join(
os.path.join(
BASE_DIR,
'statics'), 'assets'), 'about'),
'about.md')
with open(dir, 'r+') as f:
content = f.read()
content = markdown(content)
return render(request, 'show/about.html', {'all_type': all_type,'content':content })

总结
基本内容已经完成,今天刚搁腾讯云那提交了网站备案审核,明天预计把项目先部署到服务器上看看效果
基于django的个人博客网站建立(五)的更多相关文章
- 基于django的个人博客网站建立(三)
基于django的个人博客网站建立(三) 前言 网站效果可点击这里访问 今天主要完成的是文章在页面的显示以及评论,留言 具体内容 首先我希望主页面是显示我的所有文章,于是在主页面的视图函数中返回了所有 ...
- 基于django的个人博客网站建立(二)
基于django的个人博客网站建立(二) 前言 网站效果可点击这里访问 今天主要完成后台管理员登录的状态以及关于文章在后台的处理 具体内容 首先接上一次内容,昨天只是完成了一个登录的跳转,其他信息并没 ...
- 基于django的个人博客网站建立(一)
基于django的个人博客网站建立(一) 前言 网站效果可点击这里访问 之前基于hexo和github page搭建过一个博客网页,后来由于换了个系统,感觉弄的有点麻烦也就没有再去管它了,最近偶然从网 ...
- 基于django的个人博客网站建立(七)
基于django的个人博客网站建立(七) 前言 网站效果可点击这里访问 这次在原来的基础上添加或修改一些小功能 具体内容 1.代码高亮 在原来的blog-details.html页面添加下面的代码: ...
- 基于django的个人博客网站建立(六)
基于django的个人博客网站建立(六) 前言 今天主要完成的是项目在腾讯云服务器上ubuntu16.04+django+mysql+uwsig+nginx的部署过程网站效果可点击这里访问 主要内容 ...
- 基于django的个人博客网站建立(四)
基于django的个人博客网站建立(四) 前言 网站效果可点击这里访问 今天主要添加了留言与评论在后台的管理和主页文章的分页显示,文章类别的具体展示以及之前预留链接的补充 主要内容 其实今天的内容和前 ...
- 基于docker搭建wordpress博客网站平台
WordPress是使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站.也可以把 WordPress当作一个内容管理系统(CMS)来使用. WordPre ...
- 【docker构建】基于docker构建wordpress博客网站平台
WordPress是使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站.也可以把 WordPress当作一个内容管理系统(CMS)来使用. WordPre ...
- 从零搭建基于golang的个人博客网站
原文链接 : http://www.bugclosed.com/post/14 从零搭建个人博客网站需要包括云服务器(虚拟主机),域名,程序环境,博客程序等方面.本博客 就是通过这几个环节建立起来的, ...
随机推荐
- python 金融应用(一)期权定价公式的计算
一.基于不付息的欧式期权看涨BSM公式 假定股票服从下列微分方程: 期权定价公式: 二.蒙特卡洛模拟 import numpy as np import math from time import t ...
- Python3 常用的几个内置方法
目录 max()/min() filter() 过滤 map() 映射 sorted筛选 reduce()减少 max()/min() 传入一个参数 (可迭代对象), 返回这个可迭代对象中最大的元素 ...
- 【重温基础】16.JSON对象介绍
本文是 重温基础 系列文章的第十六篇. 今日感受:静. 系列目录: [复习资料]ES6/ES7/ES8/ES9资料整理(个人整理) [重温基础]1-14篇 [重温基础]15.JS对象介绍 本章节复习的 ...
- JSP注册登录页教程
转载请标明原文地址:http://www.cnblogs.com/zhangyukof/p/6785258.html 一.准备工作 已搭建好的SSH框架工程一个,如果没有,请参考我的上一篇文章< ...
- CSS flex 布局快速入门
以前已经学过flex了,一直没做笔记,现在做下笔记再回忆下. 首先,flex布局的迷之属性们,如果一知半解,机械记忆的话,那不到半个月基本忘光光.先感受一下这12个flex布局属性,是不是很“迷”人. ...
- Crow’s Foot Notation
http://www2.cs.uregina.ca/~bernatja/crowsfoot.html Crow’s Foot Notation A number of data modeling te ...
- 配置Servlet 容器
SpringBoot默认使用Tomcat作为嵌入式的Servlet容器: 1.如何定制和修改Servlet容器的相关配置: 1.修改和server有关的配置(ServerProperties[也是Em ...
- 【目录】Cocos2d-x系列
1.Cocos2d-x的坐标系统 2.Cocos2d-x 点击菜单按键居中放大(无需修改底层代码) 3.发布Cocos2d-x的PC端程序 4.Cocos2d-x游戏实例<忍者飞镖>之对象 ...
- (办公)记事本_Linux帮助命令
参考:http://www.gulixueyuan.com/course/300/task/7086/show# 帮助命令: .man命令 1.1.man命令是Linux下的帮助指令,通过man指令可 ...
- 安装SDK 6.0(二)
2==>安装SDK 6.0 打开安卓Android Studio 出现 Unable to access Android SDK add-on list 点击 Cancal 在点击Cancel ...