基于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 从零搭建个人博客网站需要包括云服务器(虚拟主机),域名,程序环境,博客程序等方面.本博客 就是通过这几个环节建立起来的, ...
随机推荐
- Python3 函数小练习
函数小练习 第一题 现有文件info.txt, 其内容如下: alpha male 18 1000 bravo male 28 2000 charlie female 38 3000 delta fe ...
- 为什么我的tomcat启动不起来?
现象: tomcat安装好了,准备部署Web项目了,启动tomcat,发现没有反应. 虽然显示了Tomcat started.但是这个 started不等同于 success,当我们打开浏览器访问80 ...
- NodeJS2-1环境&调试----CommonJS
CommonJS 每个文件是一个模块,有自己的作用域 在模块内部module变量代表模块本身 module.exports属性代表模块对外接口 require规则 /表示绝对路径,./表示型对于当前文 ...
- XML字符串转为Map集合
public class xmlToMapUtils { /** * xml字符串转为map集合 * @param xmlStr * @return */ public static Map<S ...
- SQL- SQL插入与更新删除
一 前言 经过之前的 [SQL]-SQL介绍, [SQL]- SQL检索阶段一, [SQL]-sql检索阶段二 的三篇文章你已经学会的sql的相关概念和如何查询数据库,这篇文章主要后续对数据库表的进入 ...
- SpringMVC深入浅出(一)
1.Springmvc是什么 是一个表现层框架,用于接受请求及参数,响应请求回显数据. 2.SpringMVC处理流程 SpringMVC流程 1. 用户发送请求至前端控制器DispatcherSe ...
- 深度强化学习(DQN-Deep Q Network)之应用-Flappy Bird
深度强化学习(DQN-Deep Q Network)之应用-Flappy Bird 本文系作者原创,转载请注明出处:https://www.cnblogs.com/further-further-fu ...
- C++ 构造函数【新手必学】
前言本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:可乐司机构造函数是C++里面的基础内容,特别重要,如果你刚学C++不久, ...
- JS 操作符、控制流程、循环、字符串/数组方法
操作符 算术运算符:+ .- . * . / . %.++.-- 赋值运算符:= .+=.-=. *=./=.%= 比较运算符:>.>=.<.<=.!=.==.===(全等,数 ...
- ShowDoc速记
编写文档好工具showdoc部署 参考:https://www.showdoc.cc/ 一定要看,一定要用卷,丢失数据的痛苦,痛何如哉. https://www.cnblogs.com/harrych ...