背景:自从今年回家过年后,来到公司给我转了试用,我的学习效率感觉不如从前,而且刚步入社会我总是想要怎么想明白想清楚一些事,这通常会花掉,消耗我大量的精力,因为我想把我的生活管理规划好了,而在it技术学习上就没有了年前那股猛劲,从3月开始学习Django,到现在已经5个月了,期间有差不多1个月忙毕业论文,再加上回了趟家(打乱了学习节奏),Django的学习路程就显的更加缓慢了,值得一提的事,我在Python学习上更深入了一层,之前学会的也就是Python基本语法,然后不断的用if ,for ...写了几个脚本,而这次,我通过学习  廖雪峰 的Python 教程,对IO,进程线程,Json,正则,MD5,GUI,网络编程,邮件收发,访问数据库,等都有了大致了解,学习的时候很是认真的,但是练习是很少很少的,没有需求和好的想法,很难让我着手去写些什么..

  深入了解学习Python之后,首先发现了Python的强大,也知道了以后,未来,或者是不久将来马上自己能用Python做些怎么样的有趣的东西,甚至还能帮我赚点外快,然后我本着Linux爱好者的心,开始了对  Git  的学习,同样也是看的 廖雪峰 的教程,Git的学习并不是很难,练习几下也就会了,当然我说的是基本的版本控制,然后我马上转入了,我一直想进入的  Github  大门,我觉得作为一个程序开放者,尤其是学习了开源的,没有自己的Github 都不算入门,Github的强大太多太多,这里就不一一说了,已经跑题了!!  学习完github给电脑配置好ssh,又回到了Django学习中,于是心血来潮,有了这篇我认为很重要的博客,作为这一大段时间学习成果的一个简单记录.

   Github官网https://github.com/

   我的github https://github.com/fankcoder

   

对自己无语了,自己的吐槽技能真是+++

回来正题拉!!,正题是啥来着?!   Django练习项目之搭建博客

一,环境

  1.Python

  2.Django

二,安装

  1.你的电脑没有Python?  不用多说了坑人的Windows,送你友情连接 www.baidu.com

  2.Django安装,推荐先装个pip吧,easyinstall也可以,然后终端下输入:

      pip install Django

   强烈推荐用新的Django版本!!1.8.1现在够新么?找的教程都是1.6.x的够新新新了!!!

   pip install Django==1.8.1

  测试一下安装成功否

  终端下:

    python

    import django

    django.VERSION

   (1, 8, 1, 'final', 0) 成功~!

三,开始

1.创建博客项目

找个干净的文件夹,终端下:

django-admin.py startproject nameblog

这里nameblog是示例,自己记得换哦

打开文件夹,或者cd nameblog/  输入ls

发现项目创建好了~

2.创建博客app

终端下:cd nameblog/  刚才已经cd进去的同学这步省了

然后输入:

python manage.py startapp blog

打开文件夹瞅一眼,发现多了个blog文件夹,

这时候blog项目app就创建好了~

2.简单设置一下

打开nameblog/nameblog/settings.py

进行如下设置,也就是加上一条blog:

INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog',
)

顺便换下Django默认语言把,你要是英文大神,请别鸟我,第二句是换时区,不换你就自个倒时差吧,好像永远差8小时~

LANGUAGE_CODE = 'zh_CN'

TIME_ZONE = 'Asia/Shanghai'

四,测试Django运行成功否

终端下输入,

注意现在的终端目录还应该是nameblog/下,而不是nameblog/nameblog下,请参考有manage.py的这层目录

好的,终端下输入:
python manage.py runserver

打开浏览器,

地址:127.0.0.1:8000或者localhost:8000

看到淡蓝色,提示,Django工作了~

说明项目搭建成功~

如果 python manage.py runserver跑不起来

可能8000端口被占用了,输入:

python manage.py runserver 8001

五,博客数据库

首页要知道

Django是一个基于MVC构造的框架,模型M,视图V和控制器C。
但是在Django中,控制器接受用户输入的部分由框架自行处理,
所以 Django 里更关注的是模型(Model)、模板(Template)和视图(Views),称为 MTV模式。
它们各自的职责如下:
 
层次
职责
模型(Model),即数据存取层
处理与数据相关的所有事务: 如何存取、如何验证有效性、包含哪些行为以及数据之间的关系等。
模板(Template),即表现层
处理与表现相关的决定: 如何在页面或其他类型文档中进行显示。
视图(View),即业务逻辑层
存取模型及调取恰当模板的相关逻辑。模型与模板之间的桥梁。

了解了Django先进的框架结构,就来一层一层的进行操作,

这里注意一下,我们并没有配置数据库,Django高级一点的版本会默认配置好,

数据库默认是sqlite3,如果你的博客,网站有很多人访问,sqlite3也够用了,

如果非常多的人使用建议换为,mysql,

配置是在settings.py

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}

开始配置模型,首先打开模型文件,nameblog/blog/models.py

models.py是博客数据库的,每个类都是数据库中的一张表,

配置如下:

class Tag(models.Model):
tag_name = models.CharField(max_length=20)
create_time = models.DateTimeField(auto_now_add=True) def __unicode__(self):
return self.tag_name class Classification(models.Model):
name = models.CharField(max_length=20) def __unicode__(self):
return self.name class Author(models.Model):
name = models.CharField(max_length=30)
email = models.EmailField(blank=True)
website = models.URLField(blank=True) def __unicode__(self):
return u'%s' % (self.name) class Article(models.Model):
caption = models.CharField(max_length=30)
subcaption = models.CharField(max_length=50,blank=True)
publish_time = models.DateTimeField(auto_now_add=True)
update_time = models.DateTimeField(auto_now = True)
author = models.ForeignKey(Author)
classification = models.ForeignKey(Classification)
tags = models.ManyToManyField(Tag, blank=True)
content = models.TextField()

我们要做博客app,就要写文章,文章需要的一些基本信息,这里都涵盖了,

标签,分类,作者信息,发布时间等,也可以加入自己想要的表,

保存退出,

同步数据库,在终端输入下:

python manage.py syncdb # 进入 manage.py 所在的那个文件夹下输入这个命令

 
注意:Django 1.7 及以上的版本需要用以下命令
python manage.py makemigrations
python manage.py migrate

第一次 同步数据库会让用户输入管理员帐号密码

六,配置视图

不多说了,打开nameblog/blog/views.py

from django.shortcuts import render
from blog.models import Article, Tag, Classification
from django.template import RequestContext def blog_list(request):
blogs = Article.objects.all().order_by('-publish_time')
return render(request,'index.html',{"blogs":blogs})

这里看到视图函数返回index.html,我们不是还没有创建html首页吗?对的!

七,创建模板首页

模板在app中默认没有这个文件夹,需要手动创建blog/templates/

*.html文件是要放在blog/templates/下

简单写点html欢迎代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>fank</title>
</head>
<body>
<h1>欢迎光临xx的博客</h1>
</body>
</html>

但是这是静态页面还用Django搭建起来未必太Low了吧?

加上等下我们会发布的博客文章

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>fank</title>
</head>
<body>
<h1>欢迎光临xx的博客</h1>
<div>
{% for blog in blogs %}
<div class="blog_body">
<div class="blog_title"><a href="/blog/detail/?id={{ blog.id }}">{{ blog.caption }}</a></div>
<div class="blog_info">
<ul class="blog_info_list">
<li>分类:{{ blog.classification }}</li>
<li>发表时间:{{ blog.publish_time|date:"Y-m-d H:i" }}</li>
<li>标签:
{% for tag in blog.tags.all %}
{{ tag.tag_name }}
{% endfor %}
</li>
</ul>
</div>
<div class="blog_description">
{{ blog.content }}
</div>
</div>
{% endfor %}
</div>
</body>
</html>

保存退出.

八,配置url

直到现在,我们启动项目

python manage.py runserver

你会发现,开始萌萌哒Django欢迎界面,说好的博客app呢?!

想要访问到网页,需要配置Url

打开nameblog/nameblog/urls.py

配置:

urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'^$','blog.views.blog_list',name='blog_list'),
]

这时候,把项目跑起来

python manage.py runserver

你会发现,

欢迎光临xx的博客

成功了~!

九,美化网页

没有css,js的网页不是好网页

创建blog/static/images; blog/static/css; blog/static/js

美化html,自己搞把,或者下载现成的模板,美化大家不一个品,这里就不上我的例子了

注意:静态文件加载需要设置settings.py

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR,'collected_static') STATICFILES_DIRS = (
os.path.join(BASE_DIR),
'/home/icgoo/pywork/fankblog/blog/static/',
) STATICFILES_FINDERS = (
"django.contrib.staticfiles.finders.FileSystemFinder",
"django.contrib.staticfiles.finders.AppDirectoriesFinder",
)

收集静态文件,终端下:

python manage.py collectstatic

再次打开萌萌哒的首页,让人眼前一亮,有没有?...

十,Django后台

又人开始吐槽了,做了这么久的博客app,到现在一篇文章都木有啊,什么鬼!

Django给我们提供了一个强大的后台管理,我们通过它来管理文章

打开blog/admin.py,没有则新建

from django.contrib import admin
from .models import Article admin.site.register(Article)

只需要这三行代码,我们就可以拥有一个强大的后台!

提示:urls.py中关于 admin的已经默认开启

运行服务器,

python manage.py runserver

访问 http://localhost:8000/admin/ 输入设定的帐号和密码

点击 Articles,动手输入 添加几篇文章,

再访问首页

发现文章出现在首页了~!!

十一,代码托管到Github

确保目录在nameblog/

$ git init    //初始化

$ touch README

$ git add README   //更新README文件

$ git commit -m 'first commit'//提交更新,并注释信息“first commit”

$ git remote add origin git@github.com:yourproject/nameblog.git   //连接远程github项目

$ git push -u origin master   //将本地项目更新到github项目上去

现在查看github上面的blog项目,

是不是发现已经将本地中的README文件更新上来了。

:) 恭喜!

Django练习项目之搭建博客的更多相关文章

  1. Django搭建博客网站(四)

    Django搭建博客网站(四) 最后一篇主要讲讲在后台文章编辑加入markdown,已经在文章详情页对markdown的解析. Django搭建博客网站(一) Django搭建博客网站(二) Djan ...

  2. Django搭建博客网站(三)

    Django搭建博客网站(三) 第三篇主要记录view层的逻辑和template. Django搭建博客网站(一) Django搭建博客网站(二) 结构 网站结构决定我要实现什么view. 我主要要用 ...

  3. Django搭建博客网站(二)

    Django搭建自己的博客网站(二) 这里主要讲构建系统数据库Model. Django搭建博客网站(一) model 目前就只提供一个文章model和一个文章分类标签model,在post/mode ...

  4. Django快速搭建博客系统

    Django快速搭建博客系统 一.开发环境 Windows 7(64bit) python 3.6   https://www.python.org/ Django 2.0  https://www. ...

  5. 使用django搭建博客并部署

    2017/8/31 18:27:59 为了以后参考的方便,在这里总结一下django搭建博客网站的主要步骤.以下大部分的内容,参考自Django中文文档 - 看云. 需要强调的是,这里使用的djang ...

  6. django学习笔记——搭建博客网站

    1. 配置环境,创建django工程 虚拟环境下建立Django工程,即创建一个包含python脚本文件和django配置文件的目录或者文件夹,其中manage.py是django的工程管理助手.(可 ...

  7. day14搭建博客系统项目

    day14搭建博客系统项目 1.下载代码包 [root@web02 opt]# git clone https://gitee.com/lylinux/DjangoBlog.git 2.使用pid安装 ...

  8. Django搭建博客记(一)

    这里记录一些 Django 搭建博客遇到的一些问题 参考书籍为 Django by Example, 这里记录与书籍内容不包含的内容. 搭建环境: 阿里云 ECS + CentOS7 一开始搭建的时候 ...

  9. 部署项目到服务器 & 搭建博客网站

    搭建博客网站 作为名程序员,或者是网络编程爱好者,拥有一个自己的博客网站再好不过,本篇文章手把手教你部署自己的网站

随机推荐

  1. HashMap原理

    1. HashMap概述 HashMap是基于哈希表的Map接口的非同步实现.此实现提供所有可选的映射操作,并允许使用null值和null键.此类不保证映射的顺序,特别是它不保证该顺序恒久不变. 2. ...

  2. usaco 猜数游戏

    Description 为了提高智商,锻炼思维能力,奶牛设计了一个猜数游戏.游戏开始前,贝西会在牛棚后面摆上N个数字.所有数字排成一条直线,按次序从1到N编号.每个数字在1到10^9之间,没有两个数字 ...

  3. HOST1PLUS 的 VPS 主機-絕佳的性能和特惠的價格

    HOST1PLUS 的 VPS 主機-絕佳的性能和特惠的價格 undefined Open Container Project undefined 80后美女董事长吴艳:嫁得好不一定比干得好容易 - ...

  4. How do I use a host name to look up an IP address?

    The InetAddress class can be used to perform Domain Name Server (DNS) lookups. For example, you can ...

  5. SpringMVC 流程 配置 接口

    SpringMVC简介    一 流程介绍 1.角色划分 前端控制器(DispatcherServlet).请求到处理器映射(HandlerMapping).处理器适配器(HandlerAdapter ...

  6. struts2环境搭建和第一个程序

    环境搭建 项目目录 导入依赖jar包,如上图lib目录所示. 不同的版本可能会不一样,没关系在tomcat启动时,如果报错java.lang.ClassNotFoundException,我们可以按照 ...

  7. Android应用源码图书馆管理系统带服务端数据库

    本项目是一套基于安卓的图书馆管理系统,包括jsp服务端源码,安卓客户端源码和mysql数据库.代码比较简单,供学习anroid与j2ee交互.例如Sqlite的使用.安卓客户端与jsp的web服务端的 ...

  8. 8086FLAG寄存器

    8086中的FLAG寄存器也就是状态标志位寄存器.它用来存储一些指令的计算结果,比如加法减法中的进位:为CPU运行某些命令提供根据,比如DF它决定是往前走指针还是向后走指针:总之状态寄存器存放的被称为 ...

  9. sqlite数据库修改及升级

    今天是上班的第二天,听说我最近的任务就是改bug,唉,权当学习了,遇到的一些问题都记录下来. sqlite数据库是android中非常常用的数据库,今天帮别人改bug,遇到一些问题记录下来. 1.修改 ...

  10. Android开发之TextView的下划线添加

    如何给TextView添加下划线呢,最近项目中需要这个,于是就用代码添加了下划线功能.主要就是用Paint的setFlags方法来实现,具体如下: ((TextView)mScrollView.fin ...