Django开发个人博客网站

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


1.网站示例

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

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

网站特点:

  • 基于Bootstrap4 ,响应式布局

  • 卡片式展现,美观易读

  • 支持Markdown 语法

  • 网站主页示例:

2.技术概要

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

前端:

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

后端:

  • 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 text
        except:
            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]
    
原文地址:https://www.cnblogs.com/yczha/p/13160200.html