本文介绍如何使用Django 从零开始搭建一个专属自己的高度定制化的博客平台。


1.网站示例

你可以到这里查看博主的博客示例:永春小站

网站项目地址:https://github.com/yooongchun/Blog

网站特点:

  • 基于Bootstrap4 ,响应式布局

  • 卡片式展现,美观易读

  • 支持Markdown 语法

  • 网站主页示例:

2.技术概要

完成本站建设,你需要以下技能:

前端:

  • HTML5
  • Bootstrap4
  • CSS3
  • JAVASCRIPT/jQuery
  • Django2

后端:

  • Python3
  • 云服务器部署

如果以上哪个部分你未掌握,可根据以下推荐酌情学习!

关于前端的学习,我的建议是快速学习一遍这里的教程,了解什么功能用什么方式实现即可:

  • 菜鸟教程:Bootstrap
  • 菜鸟教程:Javascript
  • 菜鸟教程:jQuery
  • 菜鸟教程:HTML
  • 菜鸟教程:CSS
  • Django教程:编写你的第一个Django应用,看完一至七即可

关于后端,建议学习以下教程:

  • Python3 学习:廖雪峰的Python3教程
  • 云服务器部署:本文后面会有讲解

3.开始建站

3.1新建Django工程

我们的站点,从建立一个Django 工程开始,博主这里选择的是Pycharm 来进行开发,需要注意的是Pycharm 教育版是不支持创建Django 项目的,需要使用专业版。按以下步骤创建一个Django工程:

File->New Project->Django->mysite

以上最后一项代表取名为:mysite

现在,我们的工程目录如下:

mysite|-mysite|-__init__.py|-settings.py|-urls.py|-wsgi.py|-templates|-manage.py

首先,新建一个自己的应用,命名为blog,此时工程目录如下:

mysite|-blog|-mysite|-__init__.py|-settings.py|-urls.py|-wsgi.py|-templates|-manage.py

按照上面介绍的Django教程进行内容开发。首先根据你的需求确定数据库的表内容,博主的数据库表包括:ImageUserCategoryTagProfileInfoMsgBlogVisitorCommentMessageResourceFriendLink;分别存储的内容是:图片【包括文章封面图和用户头像图】、用户信息、博客分类、标签、网站通知信息、博文内容、访客信息、留言、评论、资源和友情链接信息。

接下来开始编写Views.py ,包括IndexAboutArticlesArchiveMessageInfoSearchDetailResourceInfoApprovalApplyFriendLinkSponsor 几个类,分别对应的功能是:首页、关于页、文章列表页、归档页、留言信息页、搜索页、文章详情页、资源信息页、点赞功能、申请友链和捐赠页。

接着按照Views.py 对应的类来开发相应的html 页面。Index 类对应index.htmlAbout 类对应about.html ,依次对应。其中有些部分会用到多次,这时将其单独分离出来作为模块调用,包括:article-footer.html 模块提供文章底部信息,如下图示意:

article-list.html 模块提供卡片式文章列表展示;其余的模块功能跟其名称差不多,非常容易理解。html 文件对应的样式则单独分离出来,放在static/blog/css/public.css文件中,对应的js文件放在static/blog/js目录下,其中approve.js 负责点赞效果呈现及提交点赞请求,comment.js 负责评论内容提交,friend-link.js负责申请友链请求的提交,message.js 负责留言信息提交,public.js则负责一些公用的逻辑,nav-loop-message.js 负责导航栏的循环滚动消息,resource.js负责资源信息逻辑处理,site-map-figure.js负责关于页面的站点访问信息地图绘制,editormd.js是引入的editor.md插件的调用,css/editor.min.css则是相应的样式渲染文件。

另外,值得提一下的是elusive-icons.min.css是引入的第三方插件,用来提供站点图标,具体情况可访问官网:http://elusiveicons.com/icons/

最后,只需要将我们撰写的页面内容通过urls.py 文件来进行转发就行了。 完成后即可运行一下看看效果了。

在本地把内容调整好后,需要把我们的博客部署到服务器上。

3.2在服务器上部署Django工程

Django 工程部署到服务器上,使用nginx+uwsgi 两个工具,参考链接:http://www.cnblogs.com/jhao/p/6071790.html

4.问题及总结

  • Django 数据库迁移命令?

    python manage.py makemigrations
    python manage.py migrate
    
  • Django 创建超级用户?

    python manage.py createsuperuser
    
  • windows 平台下启动mysql 数据库

    以管理员身份运行命令行:

    net start mysql
    
  • 如何获取IP地址对应的城市?

    方案一:淘宝API接口【频繁请求或多次请求会返回502错误,不推荐,但可作为测试使用】

    # 根据IP地址获取城市名称
    def get_city_of_ip(ip):url = r"http://ip.taobao.com/service/getIpInfo.php"try:res = requests.get(url=url, params={"ip": ip})text = res.json()return textexcept:pass
    

    方案二:使用纯真IP 库:

    首先安装Python

    pip install qqwry
    

    编写Python 下载代码

    from qqwry import QQwry, updateQQwry
    def fetch_cz_ip_database():"""每月下载纯真数据库"""try:updateQQwry('ip_list.dat')except:pass
    

    编写查询代码:

    def get_city_of_ip(ip):"""根据IP地址获取城市名称"""q = QQwry()res = q.load_file('ip_list.dat', loadindex=False)if res:result = q.lookup(ip)q.clear()return result[0]
    

Django开发个人博客网站相关推荐

  1. Django开发个人博客网站——1、开发环境

    1.写在前面的话 刚最开始自学python,然后学习django框架,中间断断续续有几个月的时间,是时候通过一个项目来检验下自己的学习成果了.既然学习了django web框架,那很自然的就是想到要搭 ...

  2. Django开发个人博客网站——3、使用pycharm创建博客项目

    1.pycharm介绍 PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试.语法高亮.Project管理.代码跳转.智能提示.自动完 ...

  3. Django开发个人博客网站——12、实现不同大小的标签云样式

    1.创建标签页面 与上一节中创建归档页面一样,这里就不再赘述了,直接给出程序代码. tags.html {% extends 'base.html' %}{% block title %} 标签云 { ...

  4. Django开发个人博客网站——19、通过Django Haystack实现搜索功能(上)

    该博客最开始采用的模板是并不包括搜索功能的,在主页只有主页.归档和分类三个部分.最后博主自己添加了搜索框,不过其实不太想让大家使用这个功能,因此将搜索框隐藏了,只有再点击搜索时,才会显现出来.但是这个 ...

  5. Django开发个人博客网站——8、博客首页的开发

    现在我们进入博客的首页127.0.0.1:8000, 发现还是欢迎页面,因为我们还没有给博客添加任何模板,也就是前端html页面. 博客前端模板托管在GitHub:django_blog_templa ...

  6. Django开发个人博客网站——16、给博客添加上评论功能

    博客中的评论系统其实是个很复杂的东西,但是网上已经有现成的轮子了,比如django-contrib-comments,可以直接拿过来用.但是我这里博客主要是给自己看的,并不想有太复杂的互动内容,因此, ...

  7. Thinkphp5开发个人博客网站源码+技术交流分享

    正文: Thinkphp5开发个人博客网站源码+技术交流分享,TP5.0博客系统源码,支持QQ一键登录,. 安装说明: 1.将程序上传到网站根目录. 2.导入数据库文件 boke.sql 3.appl ...

  8. html编写个人博客_Django 开发简易博客网站

    本篇使用 Django 开发博客网站的核心内容,涉及 Django .MySQL .WampServer :我比较喜欢 Django 框架的 MVC (模型.视图.控制器)的软件设计模式,其中我最喜欢 ...

  9. django开发个人博客

    1.查询所有的数据 def new_list(request):articles=Article.object.order_by("-date")return render_to_ ...

最新文章

  1. 当Python遇上朱茵、迪丽热巴、林志玲、王祖贤等众多美女
  2. Matplotlib绘制指向点箭头
  3. 浅谈Python Web的五大框架
  4. python基础教程3-Python基础教程(三)
  5. SugarCRM 主表-自定义字段
  6. erwin模型怎么保存_一行命令启动,十分钟内完成部署,Paddle Serving开放模型即服务功能...
  7. string转map集合_Map、斗地主案例
  8. Android P (2)---Android 9.0 “Pistachio Ice Cream”新功能和特性
  9. 【实例解析】大型服装集团BI决策系统的分析主题模块
  10. ASP.NET MVC动态二级域名及DNS(泛解析配置)
  11. qt设置开机启动动画_Qt实现程序启动动画
  12. Linux CFS调度系统----周期性调度器
  13. GPS从入门到放弃(十九) --- 精密星历
  14. 未能监测到驱动人生服务器,驱动人生查询失败可能是DNS被劫持的锅!
  15. ITIL规范(持续更新)
  16. 阿里图标库使用(在线使用)
  17. 计算机毕业设计-基于springboot的社区志愿者管理系统
  18. python 批量更改扩展名
  19. 【荣耀开发者服务平台—百亿曝光扶持等你来】智慧服务快应用卡片接入指南(下)
  20. redis入门到精通(一) - 编译与调试

热门文章

  1. 大规模网络攻击致美国网站集体宕机 “维基解密”吁支持者停止复仇
  2. java获取url前缀 jsp_jsp 获取项目路径,java获取项目路径【蕃薯耀分享】
  3. 3D透视:最简单易懂的成像原理及实现教程
  4. 荣耀30s是否搭载鸿蒙系统,荣耀30S来袭 3月30日发布或配麒麟820芯片
  5. 操作系统真象还原第1章:部署工作环境
  6. 智能家居网络安全攻与防
  7. 《魔界地牢:异世界战纪》隐私政策
  8. Python-提升爬虫速度三种方式
  9. Linux进程同步之POSIX信号量
  10. IT职场老油条亲传:教你如何在公司汇报工作时表现更亮眼