自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 收藏
  • 关注

原创 Django-Docker容器化部署:Django-Docker-MySQL-Nginx-Gunicorn云端部署

上一章我们实现了在 Docker 中添加了 MySQL 数据库,但采用的开发服务器虽然使用便捷,但性能差、可靠性低,无法应用在生产环境中。因此本章将实现 Docker + Django + MySQL + Nginx + Gunicorn 容器项目,完成最终的服务器部署。直接进入本章的 Docker 入门读者,建议回到教程第一章开始阅读,否则某些内容不好理解。对 Django 项目部署都没有...

2019-10-10 19:58:55 610

原创 Django-Docker容器化部署:Django-Docker-MySQL部署

上一章我们成功搭建了容器化的 Django 项目,用到的数据库为默认的 Sqlite。Sqlite 虽然简单易用,但是线上部署时通常会选择更高效、更可靠的数据库,比如 MySQL。本章将在上一章的基础上,修改并构建 Docker + Django + MySQL 的容器项目。Docker-compose我们在学习面向对象的编程语言时,会想方设法把功能独立的模块给独立出来,方便复用和维护。容...

2019-10-09 22:09:41 953

原创 Django-Docker容器化部署:Django-Docker本地部署

本章将在本地搭建一个容器化的 Django 项目,感受 Docker 的运作方式。前期准备开发环境虽然有基于 Windows 的 Docker 版本,但各方面兼容做得都不太好(安装也麻烦些),因此建议读者在学习前,自行安装好 Linux 或 Mac 系统。当然你愿意折腾的话,在 Windows 上搞也行。别担心,以后开发 Django 项目仍然可以在 Windows 下进行,仅仅是开发时...

2019-10-08 20:03:40 913

原创 Django-Docker容器化部署:前言

这是教你手把手部署 Docker + Django + MySQL + Nginx + Gunicorn 的傻瓜式教程,目的是让 Docker 菜鸟也能快速部署容器化的 Django 应用。需要全面深入了解 Docker 的读者,请系统性地学习官方文档。教程共四章:前言Docker + Django 本地部署Docker + Django + MySQL 本地部署Docker +...

2019-10-07 21:11:28 282

原创 Django搭建个人博客:期末总结

本教程共写作了一年多(龟速更新…),也算告一段落了。如果还有读者特别想看、但是教程又没涉及的内容,博主会继续更新,不过时间就不能保证了。业余精力有限,如果不能保证文章的质量,那我情愿不写。如果你是本教程的忠实读者,看到这里就已经学会了以下内容:博文管理用户管理多级评论文章栏目和标签图片处理第三方登录点赞测试与维护部署其他零星功能不错,基本功能都有了。接下来学什么响应...

2019-09-15 21:32:15 305

原创 Django搭建个人博客:将项目部署到服务器

我们的博客虽然还有很多不完善的地方,但是没关系,越早把它部署到互联网上,才能越早发现线上特有的问题。现在也提倡渐进式开发,让产品在迭代中快速成长。部署考验的不是你的 Django 编程水平,而是你对 Linux 的操作能力,以及对网络通信的理解。多说无益,直接开干!配置服务器要架设网站,首先你要有一台连接到互联网的服务器。国内比较出名的云服务器属阿里云、腾讯云、百度云,三家各有优劣,大家自行...

2019-09-15 15:31:50 814

原创 Django搭建个人博客:基于 LocalStorage 的点赞功能

假设你的博客已经顺利部署到了线上。你写了很多好文章,和粉丝们互动并感受成就感。现在你想更进一步,努力提高文章质量,使其更受读者欢迎,打造圈内一流博客。问题是该如何判断一篇文章是“受欢迎的”?靠浏览量是个方法,但是并不能区分出内容花拳绣腿的标题党。靠评论数也是个好方法,但个人博客通常读者不多,好文章零评论是很正常的。这时候**“点赞”**功能就显得重要了。如果大部分读者都给了一个赞,那就表明文章...

2019-09-06 22:54:49 719

原创 Django搭建个人博客:自定义模板过滤器和标签

现在我们已经很熟悉Django的MTV模式了。模板(template)负责如何去展示数据,而视图(view)负责筛选出正确的数据。因此通常来说逻辑都是放到视图中的,但模板也需要一些和表示相关的逻辑:比如循环展示(如{% for ... %})、或者以某种特定格式输出(如{{ ...|date:'Y-m-d' }})等,这些功能都是靠模板的**过滤器(filters)和标签(tags)**实现的。...

2019-08-18 17:31:15 183

原创 Django搭建个人博客:日志记录

上一章学习了自动化测试,很好,现在我们可以绞尽脑汁写出一份全面的测试,来保证代码永远健康了。话虽如此,但是作为一个独立开发者很难写出真正全面的测试代码。这是因为用户在使用你的网站时可不会循规蹈矩,而是会以各种怪异的姿势浏览网页、上传数据。但这也不是坏事,用户就是天然的测试人员,他们会很可爱的帮你找出一大堆的bug,陪你度过难眠的夜晚(伴随着编程能力的提升)。现在的问题是,开发者如何得知用户到底...

2019-07-17 23:45:28 151

原创 Django搭建个人博客:日志记录

上一章学习了自动化测试,很好,现在我们可以绞尽脑汁写出一份全面的测试,来保证代码永远健康了。话虽如此,但是作为一个独立开发者很难写出真正全面的测试代码。这是因为用户在使用你的网站时可不会循规蹈矩,而是会以各种怪异的姿势浏览网页、上传数据。但这也不是坏事,用户就是天然的测试人员,他们会很可爱的帮你找出一大堆的bug,陪你度过难眠的夜晚(伴随着编程能力的提升)。现在的问题是,开发者如何得知用户到底...

2019-07-17 23:40:40 165

原创 Django搭建个人博客:自动化测试

测试是伴随着开发进行的,开发有多久,测试就要多久。本教程已经进行了30多章了,都是如何测试的?当然是runserver啦!每当开发新功能后,都需要运行服务器,假装自己就是用户,测试是否运行正常。这样的人工测试优点是非常直观,你看到的和用户看到的是完全相同的。但是缺点也很明显:**效率低。**在开发时可能你需要反复的修改代码、测试功能,这样重复查看几十次甚至几百次网页时会相当的让人烦躁。**...

2019-07-07 00:19:27 377

原创 Django搭建个人博客:用django-allauth实现第三方登录

现在我们已经拥有一个可以进行用户本地登录的博客系统了。如果有人欣赏你的文章,说不定就会注册成为本地用户,并和你好好交流一番。但头疼的是,用户可能每天都在互联网上浏览很多非常棒的博客,如果每个博客都要去注册才能评论,对用户是个不小的负担。对个人博客这类草根网站,说不定用户就懒得去注册了,你也就损失了一个潜在的”粉丝“。比较流行的解决方案是允许用户通过第三方登录,即可以通过GitHub、微博这类知...

2019-06-21 19:13:29 674

原创 Django搭建个人博客:锚点定位

**老读者注意:**上一章消息通知有个bug,即发给管理员的notify必须移动到new_comment.save()的后面,否则会导致action_object存储为NULL,并且导致本章的html拼接锚点失效。原文已更正,为博主的疏忽表示歉意。上一章已经实现了消息通知功能,可以很人性化的把用户引导到被他人回复的页面中去。但是仔细想想,似乎还有不方便的地方:如果页面中评论较多,想找到感...

2019-06-05 17:05:25 451

原创 Django搭建个人博客:用django-notifications实现消息通知

凭借你勤奋的写作,拜读你文章的用户越来越多,他们的评论也分散在众多的文章之中。作为博主,读者的留言肯定是要都看的;而读者给你留言,自然也希望得到回复。怎么将未读的留言呈现给正确的用户呢?总不能用户自己去茫茫文章中寻找吧,那也太蠢了。给评论增加通知功能就是很流行的解决方案:比如微信朋友圈留言的通知、新浪微博留言的通知、以及各种社交平台的“小红点”。本篇将以django-notifications...

2019-05-18 19:28:59 3706 1

原创 Django搭建个人博客:用django-mptt实现多级评论功能

现在我们的博客已经具有评论功能了。随着文章的评论者越来越多,有的时候评论者之间也需要交流,甚至部分评论还能合并成一个小的整体。因此最好是有某种方法可以将相关的评论聚集到一起,这时候多级评论就非常的有用了。多级评论意味着你需要将模型重新组织为树形结构。“树根”是一级评论,而众多“树叶”则是次级评论。本教程会以第三方库django-mptt为基础,开发多级评论功能。django-mptt模块包含...

2019-05-04 20:56:33 1316 1

原创 Django搭建个人博客:回到顶部浮动按钮、矢量图标、页脚沉底和粘性侧边栏

本章集中介绍四个重要的小功能:回到顶部浮动按钮、矢量图标、页脚沉底和粘性侧边栏。这几个功能与Django基本没啥关系,更多的是前端知识,但是对博客网站都很重要,问的读者也比较多,因此也集中讲一下好了。回到顶部浮动按钮当用户拜读完你的博文后,可能想回到文章开头重新阅读,或者审视其中的某些内容。如果文章内容较多,不停滑动滚轮回页面顶部未免有点太让人烦躁了。一种解决办法是增加一个回到顶部的浮动按...

2019-04-11 21:30:53 644

原创 Django搭建个人博客:使用django-ckeditor富文本编辑器

前面我们已经实现了用Markdown语法写文章了。但是文章的评论用Markdown就不太合适了,你不能强求用户也花时间去熟悉语法啊。另外评论中通常还有表情、带颜色的字体等功能,这些也是Markdown不具备的。因此富文本编辑器Django-ckeditor就派上用场了。在后台使用Ckeditor在虚拟环境中安装django-ckeditor:(env) > pip install d...

2019-03-21 21:44:21 1078 1

原创 Django搭建个人博客:给文章加个漂亮的标题图

现在虽然博客的功能大都实现了,但是界面还是比较朴素,特别是首页的文章列表几乎全是文字,看多了难免疲劳。因此,给每个文章标题配一张标题图,不仅美观,用户也能通过图片快速了解文章内容。实际上大部分社交网站也都是这么干的,毕竟人的天性就是懒,能看图就坚决不看字。在上传用户头像章节中,我们已经接触过上传、展示图片了。标题图的实现也差不多,不同的是本章会更近一步,对图片进行缩放等处理,使页面整洁美观、并且...

2019-02-27 21:10:49 422

原创 Django搭建个人博客:文章标签功能

“标签”是作者从文章中提取的核心词汇,其他用户可以通过标签快速了解文章的关注点。每一篇文章的标签可能都不一样,并且还可能拥有多个标签,这是与栏目功能不同的。好在标签功能也有优秀的三方库:Django-taggit,省得自己动手设计了。快速开发就是这样,能“借用”就不要自己重复劳动。安装及设置首先在虚拟环境中安装Django-taggit:pip install django-taggit...

2019-02-12 21:41:30 749 1

原创 Django搭建个人博客:设置文章的栏目

博客的文章类型通常不止一种:有时候你会写高深莫测的技术文章,有时候又纯粹只记录一下当天的心情。因此对文章的分类就显得相当的重要了,既方便博主对文章进行分类归档,也方便用户有针对性的阅读。而文章分类一个重要的途径就是设置栏目。栏目的模型实现文章栏目功能的方法有多种。你可以只是简单的在文章的Model中增加CharField()字段,以字符串的形式将栏目名称保存起来(实际上这种实现更像是**“...

2019-01-29 23:54:16 332

原创 Django搭建个人博客:基于类的视图

说是完结,马上又开始写进阶篇了。本章不会为博客项目增加新功能,但是也同样重要,因为我们要学习高逼格的基于类的视图。什么是类视图前面章节中写的所有视图都是基于函数的,即def;而类视图是基于类的,即class。有编程基础的同学都知道,类是面向对象技术中非常重要的概念。具有复杂数据、功能的类,可以通过继承轻而易举的将自身特性传递给另一个类,从而实现代码的高效复用。相比以前的函数视图,类视图有...

2019-01-16 21:21:23 275

原创 Django搭建个人博客:课间休息

教程看到这里,你已经学会如下内容:搭建开发环境博文管理用户管理发表评论若干小功能搭建简单的小博客,以上的功能够用了。**相信你的志向不止于此。**毕竟程序员面试个个造火箭啊。接下来学什么虽说Django已经入门了,但别激动,还有漫漫长路需要走哒。重要的学习点列举如下。响应式布局响应式布局,简单来说就是页面布局随着终端设备的变化而自动适应。教程为了起步平缓,没有展开这方...

2019-01-04 22:16:13 264 2

原创 Django搭建个人博客:在博文中发表评论

在没有互联网的年代,我们用日记来记录每天的心得体会。小的时候我有一个带锁的日记本,生怕被别人看见里面写了啥,钥匙藏得那叫一个绝。现在时代变了,网络版的日记本:博客,却巴不得越多人看越好。别人看完你写的深度好文,难免也想高谈阔论一番,这就是“评论”功能。本章将要编写的评论模块,几乎没有新的知识点,而是将前面章节内容的综合应用。强烈建议读者自行尝试编写这部分内容,测试自己的知识掌握程度。准备...

2019-01-02 10:34:23 841 3

原创 Django搭建个人博客:渲染Markdown文章目录

对会读书的人来说,读一本书要做的第一件事,就是仔细阅读这本书的目录。阅读目录可以对整体内容有所了解,并清楚地知道感兴趣的部分在哪里,提高阅读质量。博文也是同样的,好的目录对博主和读者都很有帮助。更进一步的是,还可以在目录中设置锚点,点击标题就立即前往该处,非常的方便。文中的目录之前我们已经为博文支持了Markdown语法,现在继续增强其功能。有折腾代码高亮的痛苦经历之后,设置Markdow...

2019-01-01 15:12:53 1141 1

原创 Django搭建个人博客:简单搜索博客文章

不管是最新文章列表也好、最热文章列表也罢,都是把所有的文章数据全部展示给了用户。但是如果用户只关心某些特定类型的文章,抽取全部数据就显得既不方便、又不效率了。因此,给用户提供一个搜索功能,提供给用户感兴趣的几篇文章,就大有用处了。准备工作逻辑尽管细节不同,但是搜索和列表有很多类似的地方:它们都是先检索出一些文章对象,并将其展示给用户。上一章已经说过,代码重复是万恶之源,好的实践必须把功能...

2018-12-31 17:32:12 361

原创 Django搭建个人博客:根据浏览量对最热文章排序

有了浏览量之后,文章受欢迎的程度就有了评价标准。随之而来的就有根据浏览量对文章进行排序的需求,即显示**“最热文章”**。现在你已经很熟悉MTV模式,不需要我啰嗦也能完成任务:文章的模型已经有了,不需要写Model了写一个视图函数article_list_by_views(),取出按浏览排序后的文章对象将文章对象传递到模板,并进行渲染很简单,但也隐藏着问题:最热文章列表和之前的普通文...

2018-12-30 21:30:46 927

原创 Django搭建个人博客:统计文章浏览量

文章浏览量是所有社交类网站所必备的数据,足以显示其重要性了。博主可以通过浏览量来评估某篇文章的受欢迎程度,读者也能够通过浏览量来筛选质量更高的文章。然而,准确统计浏览量并不简单:某些类型的请求不应该统计为浏览量,比如作者自己的浏览或编辑文章之后的重定向请求;由于用户众多,浏览量的数据时刻都在快速更新,会给数据库带来很大的压力。因此很多大型网站都会使用如Redis这样的读写速度非常快的内存...

2018-12-29 12:12:16 545 1

原创 Django搭建个人博客:文章分页

随着时间的推移(加上勤奋的写作!),你的博客文章一定会越来越多。如果不进行处理,可能同一个页面会挤上成百上千的文章,不美观不说,还降低了页面的反应速度。这个时候就需要对文章进行分页的处理。利用轮子写一个完善的分页功能是有些难度的,好在Django已经帮你准备好一个现成的分页模块了(Django把大部分基础功能都替你准备好了!)。内置模块虽然简单,但是对博客来说完全足够了。我们要用到的是Pa...

2018-12-20 22:06:25 310

原创 Django搭建个人博客:上传头像图片

到目前为止我们的博客处理的都是文字。现代互联网早就进入了“读图”时代,图片的维护、展示也就相当重要。上一章中预留了avatar字段,用来保存用户上传的头像,现在我们来实现这个功能。必要的设置图片属于一种媒体文件,它与静态文件类似,需要设置一个统一的目录,便于集中存储和访问。这类需要框架统一设置的参数,当然应该在/my_blog/settings.py中。在底部加上:/my_blog/se...

2018-12-06 12:42:37 526

原创 Django搭建个人博客:扩展用户信息

可能你已经发现了,Django自带的User模型非常实用,以至于我们没有写用户管理相关的任何模型。但是自带的User毕竟可用的字段较少。比方说非常重要的电话号码、头像等都没有。解决的方法有很多,你可以不使用User,自己从零写用户模型;也可以对User模型进行扩展。博客网站的用户信息并不复杂,因此扩展User就足够了。扩展User模型扩展User模型又有不同的方法。在大多数情况下,使用模型...

2018-12-06 12:36:28 398

原创 Django搭建个人博客:重置用户密码

随着技术的发展,验证用户身份的手段越来越多,指纹、面容、声纹应有尽有,但密码依然是最重要的手段。互联网处处都有密码的身影,甚至变成了现代人的一种负担。像笔者这样的,动辄几十个账号密码,忘记其中几个简直太正常了。本章讲如何帮助健忘症患者,重置用户密码。安装第三方库前面我们已经知道如何修改文章标题、正文等内容,但是密码作为验证身份的重要口令,必须以更加稳妥的方式修改。一种比较常用的方式是发送一...

2018-11-04 18:08:01 497

原创 Django搭建个人博客:用户的删除

这一章将实现删除用户数据的功能。权限与视图删除用户数据本身的逻辑并不复杂,但是会涉及到新的问题。用户数据是很多网站最重要的财产,确保用户数据的安全是非常重要的。前面学习的用户登录、退出、创建都是相对安全的操作;而删除数据就很危险,弄不好会造成不可逆的损失。因此我们希望对操作者做一些限制,比如只能用户登录且必须是本用户才能进行删除的操作。这就是权限。因此在视图中进行简单的用户权限的验证工作...

2018-11-04 18:07:40 453

原创 Django搭建个人博客:用户的注册

既然有登录登出,那么用户的注册肯定也是少不了的。注册表单类用户注册时会用到表单来提交账号、密码等数据,所以需要写注册用的表单/userprofile/forms.py:/userprofile/forms.py...# 注册用户表单class UserRegisterForm(forms.ModelForm): # 复写 User 的密码 password = fo...

2018-11-03 11:10:17 524 3

原创 Django搭建个人博客:用户的登录和登出

用户管理用户数据可以说是大部分网站最重要的资产。用户管理就是对用户数据进行增删改查等操作的功能,自然也就非常的重要了。本章开始学习用户管理的内容,首先从用户登录开始。在Django中用app来区别不同功能的模块,达到代码隔离和复用。因为用户管理和博客文章的功能不同,因此需要新建一个专门的app。进入虚拟环境,运行startapp指令创建新的app:python manage.py sta...

2018-11-02 21:32:15 767 1

原创 Django搭建个人博客:完成修改文章功能

目前为止我们已经完成了文章的新建、删除以及查看,还剩最后一项,即对已经完成的文章进行修改。实际上修改文章与新建文章有点类似,不同的地方有两点:修改是在原有文章的基础上,因此需要传递 id 指明具体需要修改的文章加载页面时需要将旧的内容作为默认值填写到表单中,因此需要将文章对象传递到html中按照这个思路,接下来先写视图函数。视图函数在ariticle/views.py中增加修改文章...

2018-10-20 22:34:17 1234 1

原创 30岁零基础自学编程,先学哪种语言最好?

**说说我自己的经历。**南京理工大学,光学工程研究生毕业,和程序猿完全不搭边。毕业后进了成都某国字头研究所,在光学行业醉心研究了四年,觉得这行当实在没啥好钻研的,瞅来瞅去总不能干微商吧,还是自学编程最合适:成本低,一台电脑足以;见效快,没有实体行业的周期流程,马上就能看到效果。于是乎就下定决心要学Python,想法很单纯,就是把这门语言学好。殊不知这才是一个巨坑的开始。2017年10月,开...

2018-10-12 21:31:17 16491 11

原创 Django搭建个人博客:编写删除文章功能

既然有了写文章的功能,那当然也必须要有删除文章的功能了。编写基本功能有了之前的学习做铺垫,删除文章实现起来就比较简单了。首先增加一个视图函数:article/views.py...# 删文章def article_delete(request, id): # 根据 id 获取需要删除的文章 article = ArticlePost.objects.get(id=...

2018-10-08 19:43:47 1705

原创 Django搭建个人博客:使用Form表单类发表新文章

前面我们已经学会如何用Markdown语法书写文章了。但是还有问题呀。之前写文章都是在后台中进行的,万一有别的普通用户也要发表文章怎么办?万一我想拓展些后台中没有的提交验证功能又怎么办?本章即讲述如何在前台中提交新的文章,以便满足开发者各种各样的特殊需求。Forms表单类在HTML中,表单是在 <form>...</form> 中的一些元素,它允许访客做类似输入文本...

2018-09-27 18:09:56 1745 1

原创 Django搭建个人博客:使用Markdown语法书写文章

上一章我们实现了文章详情页面。为了让文章正文能够进行标题、加粗、引用、代码块等不同的排版(像在Office中那样!),我们将使用Markdown语法。安装MarkdownMarkdown是一种轻量级的标记语言,它允许人们“使用易读易写的纯文本格式编写文档,然后转换成有效的或者HTML文档。建议读者一定要花五分钟时间熟悉一下Markdown的语法,熟练后码字效率一定会大幅提高。关于Markdo...

2018-09-19 19:31:39 4647

原创 Django搭建个人博客:编写文章详情页面

有了文章列表页面后,当然还需要详情页面,方便用户对某一篇感兴趣的文章深入阅读。编写视图函数打开article/views.py,增加文章详情页面的视图函数article_detail():article/views.py...# 文章详情def article_detail(request, id): # 取出相应的文章 article = ArticlePost.object...

2018-09-19 19:30:17 773 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除