Django开发个人博客网站
本文介绍如何使用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
教程进行内容开发。首先根据你的需求确定数据库的表内容,博主的数据库表包括:Image
、 User
、 Category
、 TagProfile
、 InfoMsg
、Blog
、 Visitor
、 Comment
、 Message
、 Resource
、 FriendLink
;分别存储的内容是:图片【包括文章封面图和用户头像图】、用户信息、博客分类、标签、网站通知信息、博文内容、访客信息、留言、评论、资源和友情链接信息。
接下来开始编写Views.py
,包括Index
、About
、Articles
、Archive
、MessageInfo
、Search
、Detail
、ResourceInfo
、Approval
、ApplyFriendLink
和Sponsor
几个类,分别对应的功能是:首页、关于页、文章列表页、归档页、留言信息页、搜索页、文章详情页、资源信息页、点赞功能、申请友链和捐赠页。
接着按照Views.py
对应的类来开发相应的html
页面。Index
类对应index.html
,About
类对应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开发个人博客网站相关推荐
- Django开发个人博客网站——1、开发环境
1.写在前面的话 刚最开始自学python,然后学习django框架,中间断断续续有几个月的时间,是时候通过一个项目来检验下自己的学习成果了.既然学习了django web框架,那很自然的就是想到要搭 ...
- Django开发个人博客网站——3、使用pycharm创建博客项目
1.pycharm介绍 PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试.语法高亮.Project管理.代码跳转.智能提示.自动完 ...
- Django开发个人博客网站——12、实现不同大小的标签云样式
1.创建标签页面 与上一节中创建归档页面一样,这里就不再赘述了,直接给出程序代码. tags.html {% extends 'base.html' %}{% block title %} 标签云 { ...
- Django开发个人博客网站——19、通过Django Haystack实现搜索功能(上)
该博客最开始采用的模板是并不包括搜索功能的,在主页只有主页.归档和分类三个部分.最后博主自己添加了搜索框,不过其实不太想让大家使用这个功能,因此将搜索框隐藏了,只有再点击搜索时,才会显现出来.但是这个 ...
- Django开发个人博客网站——8、博客首页的开发
现在我们进入博客的首页127.0.0.1:8000, 发现还是欢迎页面,因为我们还没有给博客添加任何模板,也就是前端html页面. 博客前端模板托管在GitHub:django_blog_templa ...
- Django开发个人博客网站——16、给博客添加上评论功能
博客中的评论系统其实是个很复杂的东西,但是网上已经有现成的轮子了,比如django-contrib-comments,可以直接拿过来用.但是我这里博客主要是给自己看的,并不想有太复杂的互动内容,因此, ...
- Thinkphp5开发个人博客网站源码+技术交流分享
正文: Thinkphp5开发个人博客网站源码+技术交流分享,TP5.0博客系统源码,支持QQ一键登录,. 安装说明: 1.将程序上传到网站根目录. 2.导入数据库文件 boke.sql 3.appl ...
- html编写个人博客_Django 开发简易博客网站
本篇使用 Django 开发博客网站的核心内容,涉及 Django .MySQL .WampServer :我比较喜欢 Django 框架的 MVC (模型.视图.控制器)的软件设计模式,其中我最喜欢 ...
- django开发个人博客
1.查询所有的数据 def new_list(request):articles=Article.object.order_by("-date")return render_to_ ...
最新文章
- 当Python遇上朱茵、迪丽热巴、林志玲、王祖贤等众多美女
- Matplotlib绘制指向点箭头
- 浅谈Python Web的五大框架
- python基础教程3-Python基础教程(三)
- SugarCRM 主表-自定义字段
- erwin模型怎么保存_一行命令启动,十分钟内完成部署,Paddle Serving开放模型即服务功能...
- string转map集合_Map、斗地主案例
- Android P (2)---Android 9.0 “Pistachio Ice Cream”新功能和特性
- 【实例解析】大型服装集团BI决策系统的分析主题模块
- ASP.NET MVC动态二级域名及DNS(泛解析配置)
- qt设置开机启动动画_Qt实现程序启动动画
- Linux CFS调度系统----周期性调度器
- GPS从入门到放弃(十九) --- 精密星历
- 未能监测到驱动人生服务器,驱动人生查询失败可能是DNS被劫持的锅!
- ITIL规范(持续更新)
- 阿里图标库使用(在线使用)
- 计算机毕业设计-基于springboot的社区志愿者管理系统
- python 批量更改扩展名
- 【荣耀开发者服务平台—百亿曝光扶持等你来】智慧服务快应用卡片接入指南(下)
- redis入门到精通(一) - 编译与调试