Python采用Django开发自己的博客系统

好久之前就想做一下自己的博客系统了,但是在网上查了查好像是需要会一些node.js的相关知识,而且还要安装辣么多的库什么的,就不想碰了。但是我遇到了django这么一款神器,没想到我的博客系统就这么建立起来了。虽然是最基础的类型。但是也算是成功了,这篇博客比较适合对django有了一定了解的童鞋,如果是新手的话,建议先看一下django的基础知识点再来做实验,这样效率更高! 

好了,话不多说,开始吧。

搭建框架
 •创建项目及应用

搭建框架的意思,就是安装Django以及做好相关的配置。因为我是在PyCharm下进行创建的,所以工具代替我做了很多事情。但是底层也无非是下面几行代码:

创建一个Django项目,名为MyDjango

立即学习“Python免费学习笔记(深入)”;

django-admin startproject MyDjango

创建一个Django应用,名为MyBlog。这里应该注意的是应用隶属于项目的子集。通俗的来说应用文件夹是作为项目文件夹的子集而存在的。

django-admin startapp MyBlog

 •创建数据库及底层模型

我这里简单的以默认的sqlite3数据库作为了我的博客系统的数据库了,当然你也可以自己制定需要的数据库,一般来说sqlite3都能满足需求。在setting.py里面可以这样进行设置。

# Database# https://docs.djangoproject.com/en/1.9/ref/settings/#databasesDATABASES = { 'default': {  'ENGINE': 'django.db.backends.sqlite3',  'NAME': 'MyBlog.db',  'USER':'',  'PASSWORD':'',  'HOST':'',  'PORT':'', }}

登录后复制

建好了数据库,接下来就是模型的创建了。因为我创建的是博客系统,所以必不可少的要发布关于博客的内容,于是需要有标题,内容,发布时间这些属性,详情如models.py文件

from __future__ import unicode_literalsfrom django.contrib import adminfrom django.db import models# create the blog modelclass BlogPost(models.Model): title = models.CharField(max_length=150) body = models.TextField() timestamp = models.DateTimeField() def __unicode__(self):  return self.title

登录后复制

由于需要管理员对发布的博客进行管理,所以我们要对发布的博客设置一个管理模型,

# set the admin page for BlogPostclass BlogPostAdmin(admin.ModelAdmin): list_display = ('title','timestamp')# register the model (especially importantadmin.site.register(BlogPost)

登录后复制

所以整个models.py文件里面就应该是这样的了。

from __future__ import unicode_literalsfrom django.contrib import adminfrom django.db import models# create the blog modelclass BlogPost(models.Model): title = models.CharField(max_length=150) body = models.TextField() timestamp = models.DateTimeField() def __unicode__(self):  return self.title# set the admin page for BlogPostclass BlogPostAdmin(admin.ModelAdmin): list_display = ('title','timestamp')# register the model (especially importantadmin.site.register(BlogPost)

登录后复制

接下来,就是同步一下数据库和模型之间的联系了。如果不做同步操作的话,就很有可能报出
django.db.utils.OperationalError: unable to open database file
而且这里也是很重要的一个环节。那就是关于Django版本的问题,我之前就在这上面栽过一次。

 django     python manage.py syncdb

django > 1.7 时:
    python manage.py makemigrations
    python manage.py migrate

完善MVC模式

其实前面的步骤而言,我们已经是完成了model这个模块的功能了,接下来就是做好视图的映射就可以了。
 •V(views.py)视图层

我们需要在这个文件里面定义好底层的逻辑处理。这决定着要返回给用户一个什么样的response。至于采用哪种渲染方式,大家就不要在这上面浪费不必要的时间了。render_to_response就足够了。

# create the view for blog showdef myBlogs(request): blog_list = BlogPost.objects.all() return render_to_response('BlogTemplate.html',{'blog_list':blog_list})

登录后复制

这里面用到了模板文件,还传给了模板一个列表类型的参数,这些我们待会再叙。

 •C(controller)urls.py

可以说这个文件将Django各部分松耦合的功能衔接到了一起,完成了整个项目的运转的非核心的核心了,是关于如何映射的逻辑的处理。接下来我们就将我们的博客系统设置一下吧。

from django.conf.urls import urlfrom django.contrib import adminfrom MyBlog.views import *urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^myBlogs/$',myBlogs),]

登录后复制

关于如何映射,我的上一篇文章里面有详细的介绍,PyCharm开发Django基础配置。有兴趣的可以参考一下。好了,这次我们在完成了admin管理员用户的设置之后,就可以运行我们的程序了。

python manage.py runserver 

出现了:

Performing system checks...System check identified no issues (0 silenced).June 05, 2016 - 11:39:27Django version 1.9.6, using settings 'MyDjango.settings'Starting development server at http://www.php.cn/:8000/Quit the server with CTRL-BREAK.

登录后复制

这时就可以在浏览器中输入
http://127.0.0.1:8000/admin,登陆成功后可以点击下面的Blog Posts编辑博文了。然后点击SAVE 按钮,就可以发布我们的博客。接下来在浏览器中输入
http://127.0.0.1:8000/myBlogs/ 访问我们的博客系统了。

这样就实现了我们的博客系统的建立了。但是由于没有添加样式,所以看起来不是很好看,所以我们要添加以下模板的样式。

模板配置

接着刚才的继续,关于模板,这里面可谓是有着很深的设计哲学。了解过的大家肯定都会有感触,我就不多说了。
接下来就为我们的博客系统设置一下模板吧。
 •父模板base.html
按照django对模板的继承设置,我们可以制作一个父模板。如下:

nbsp;html>  标题 body{  color: #efd;  background: #BBBBBB;  padding: 12px 5em;  margin:7px; } h1{  padding: 2em;  background: #675; } h2{  color: #85F2F2;  border-top: 1px dotted #fff;  margin-top:2em; } p{  margin:1em 0; }

XX博文

小生不才,但求简约!

{% block content %}{% endblock %}

登录后复制

•然后就是子模板BlogTemplate.html

{% extends "base.html" %} {% block content %}  {% for post in blog_list %}   

{{ post.title }}

   

{{ post.timestamp }}

   

{{ post.body }}

  {% endfor %} {% endblock %}

登录后复制

需要注意的就是模板中的模板标签以及模板变量都应该与views.py文件对应的函数中的字典变量相一致,否则django虽然不会报错,但也是不会显示数据的。 

接下来刷新一下,输入http://127.0.0.1:8000/admin/

点击add按钮,开始添加你的博文吧。

Python采用Django开发自己的博客系统

Python采用Django开发自己的博客系统

然后在浏览器中输入
http://www.php.cn/:8000/myBlogs/.你就可以看到你的博客列表了,如图

Python采用Django开发自己的博客系统

大家可能已经看到了,问题就出在点击标题没有进入到相关的详情页面,那是因为还没有添加这个功能呢。(^__^) 嘻嘻……

总结

今天一起做了一个简单的博客系统,虽然外观看起来并不是很好看,但是内容什么的差不多就是这样了。还有很多的地方需要完善。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持PHP中文网。

更多Python采用Django开发自己的博客系统相关文章请关注PHP中文网!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2278839.html

(0)
上一篇 2025年2月27日 17:03:09
下一篇 2025年2月27日 17:03:28

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • PS卡在载入界面怎么办?

    PS卡在载入界面可能是由软件自身(文件损坏或插件冲突)、系统环境(驱动过时或系统文件损坏)或硬件(硬盘损坏或内存条故障)问题造成的。首先检查计算机资源是否充足,关闭后台程序释放内存和CPU资源。修复PS安装或检查插件是否存在兼容性问题。更新…

    2025年3月30日
    100
  • PS一直显示正在载入是什么原因?

    PS“正在载入”问题是由资源访问或处理问题引起的:硬盘读取速度慢或有坏道:使用CrystalDiskInfo检查硬盘健康状况并更换有问题的硬盘。内存不足:升级内存以满足PS对高分辨率图片和复杂图层处理的需求。显卡驱动程序过时或损坏:更新驱动…

    2025年3月30日
    100
  • PS启动时一直显示正在载入如何解决?

    PS启动时卡在“正在载入”可能是由于各种原因造成的:禁用损坏或冲突的插件。删除或重命名损坏的配置文件。关闭不必要的程序或升级内存,避免内存不足。升级到固态硬盘,加快硬盘读取速度。重装PS修复损坏的系统文件或安装包问题。查看错误日志分析启动过…

    2025年3月30日
    100
  • PS打开文件时一直显示正在载入如何解决?

    PS打开文件时出现“正在载入”卡顿,原因可能包括:文件过大或损坏、内存不足、硬盘速度慢、显卡驱动问题、PS版本或插件冲突。解决方法依次为:检查文件大小和完整性、增加内存、升级硬盘、更新显卡驱动、卸载或禁用可疑插件、重装PS。通过逐步排查,并…

    2025年3月30日
    100
  • 如何加快PS的载入速度?

    解决 Photoshop 启动慢的问题需要多管齐下,包括:升级硬件(内存、固态硬盘、CPU);卸载过时或不兼容的插件;定期清理系统垃圾和过多的后台程序;谨慎关闭无关紧要的程序;启动时避免打开大量文件。 Photoshop启动慢?这问题我太熟…

    2025年3月30日
    100
  • PS载入慢与电脑配置有关吗?

    PS载入慢的原因在于硬件(CPU、内存、硬盘、显卡)和软件(系统、后台程序)的综合影响。解决方法包括:升级硬件(尤其是更换固态硬盘),优化软件(清理系统垃圾、更新驱动、检查PS设置),处理PS文件。定期维护电脑也有助于提升PS运行速度。 P…

    2025年3月30日
    100
  • PS载入慢与硬盘速度有关吗?

    硬盘速度可能导致 PS 启动缓慢,但并非唯一原因。启动过程涉及多种任务,例如资源解压、插件加载和数据结构初始化,其中任何环节卡壳都会延长启动时间。系统配置(内存不足、CPU 性能不足)、系统问题以及安装位置也会影响启动速度。综合考虑硬件配置…

    2025年3月30日
    100
  • 优酷视频转码mp4教程 优酷视频怎么转码mp4

    答案: 是的,通过第三方工具,可以将优酷视频转码为MP4格式,以提高兼容性和清晰度。详细描述:转码原因: 优酷原始格式不总是MP4,可能导致兼容性差和清晰度低。转码方法:在线视频转换网站(方便快捷,但速度慢,质量可能下降)专业视频转换软件(…

    2025年3月29日
    100
  • DeepSeek如何本地部署-探索DeepSeek本地部署全面指南

    deepseek本地部署指南:高效运行深度学习模型 DeepSeek是一款强大的本地部署深度学习工具,专为AI开发者打造。本文将指导您完成DeepSeek的本地部署,并提供一些实用技巧,助您快速上手。 DeepSeek本地部署步骤 首先,请…

    2025年3月29日
    100
  • deepseek怎么用python调用

    在开始之前,请确保你的计算机上已安装python和pip。打开命令提示符(windows)或终端(mac/linux),输入以下命令来验证python和pip的安装情况: “` python –version pip…

    2025年3月29日
    100

发表回复

登录后才能评论