Django练习项目之搭建博客

时间:2022-08-30 23:35:55

  背景:自从今年回家过年后,来到公司给我转了试用,我的学习效率感觉不如从前,而且刚步入社会我总是想要怎么想明白想清楚一些事,这通常会花掉,消耗我大量的精力,因为我想把我的生活管理规划好了,而在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搭建博客网站&lpar;四&rpar;

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

  2. Django搭建博客网站&lpar;三&rpar;

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

  3. Django搭建博客网站&lpar;二&rpar;

    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搭建博客记&lpar;一&rpar;

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

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

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

随机推荐

  1. Vue&period;js介绍样码

    了解一下,其它的什么SASS,COMPASS,WEBPACK,VUE.JS都看看,了解一下前端开发的一些知识点吧. <!DOCTYPE html PUBLIC "-//W3C//DTD ...

  2. 用sql查询当天&comma;一周&comma;一个月的数据

    用sql查询当天,一周,一个月的数据   数据查询,不管在网站还是在系统,都很常见,下文是介绍最常见的以日期查询的语句 select * from ShopOrder where datediff(w ...

  3. ajax 中的一些方法应用

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. SQL数据库基本语句

    SQL特点--> 1)综合统一.SQL是集数据定义.数据操作和数据控制于一体,语言峰峰统一,可独立完成数据库生命周期的所有活动. 2)高度非过程化.SQL语言是高度非过程化语言,当进行数据操作时 ...

  5. Cannot resolve the collation conflict between &quot&semi;SQL&lowbar;Latin1&lowbar;General&lowbar;CP1&lowbar;CI&lowbar;AS&quot&semi; and &quot&semi;Latin1&lowbar;General&lowbar;100&lowbar;CI&lowbar;AS&quot&semi; in the equal to operation&period;

    ErrorMessage Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS" ...

  6. C&num;委托&comma;事件,匿名委托

    作为一个初学者,写下来是当做自己的学习笔记,希望在以后遇到问题的时候能够快速的找到方法 如果能帮助跟我一样的新人是更好不过的了        如果有什么不正确或者可以改进的地方也希望大家能够指出来  ...

  7. nginx 配置 同一域名端口下,根据URL 导向不同的项目目录

    我们现在拥有2个项目.但是只有一个域名,通过nginx配置来实现以下url导向不同的项目. 后台管理台:{域名}/admin 用户客户端:{域名}/client server { listen 888 ...

  8. CentOS7&period;5安装nodejs

    安装方法1——直接部署 1.首先安装wget yum install -y wget 如果已经安装了可以跳过该步 2.下载nodejs最新的tar包 可以在下载页面https://nodejs.org ...

  9. windows安装 php-redis redis 扩展

    1.查看phpinfo(),确定要下载的扩展版本,扩展的下载地址在:https://pecl.php.net/package/redis 上图对应是是以下版本 2.把下载包里的文件放到php的ext文 ...

  10. MySQL获取指定长度的字符串的函数left&lpar;s&comma;n&rpar;和right&lpar;s&comma;n&rpar;

    1.LEFT(s,n)函数返回字符串s开始的最左边n个字符. eg: select left(‘abcde12345‘,5);   ======>‘abcde‘ 2.RIGHT(s,n)函数返回 ...