使用Python2.7.13+django1.11.2+vue2.0开发的个人博客网站

时间:2022-04-07 20:29:55

一、安装git

https://git-for-windows.github.io/

这是Windows下的安装地址,安装都是无脑next

二、在github上面下载项目

1.在本地选择一个文件目录,在此目录下下载项目,我的目录是D:\workplace\

2.右击该目录下的空白部分,会看到菜单有git bash选项,直接点击。

3.输入以下命令

git init //初始化git
git clone https://github.com/HuJieRu/djangoBlog.git //拷贝项目

4.等待完成之后就下载好了

三、启动项目

1.下载前端需要的依赖包

 cd djangoBlog/vue-blog //进入vue-blog目录
npm install //下载
npm run build//编译一下文件

2.安装mysql 数据库并启动

此项目的数据库配置在settings.py文件里面,要更改的请自行更改

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'blog', //数据库名称
'USER': 'root', //用户名
'PASSWORD': '123456', //密码
'HOST': 'localhost', //地址
'PORT': '3306', //端口
}
}

3.安装django

4.期间可能会需要下载pytz、mysql-python等

5.进入项目根目录

执行以下命令

python manage.py runserver

项目即可启动成功,在浏览器输入localhost:8000即可看到项目

 四、django项目构建和前端编写

1.django项目构建可以参考我的另一篇博客,在这里就不赘述,这是博客地址http://www.cnblogs.com/jieru/p/7095351.html

2.vue-blog就是前端主要编写的地方,该项目目录是参考vuejs官网的构建方法,非常简单,在这也不赘述

3.在我的项目中vue-blog就是前端,blog就是后端

4.使用webpack进行打包

进入vue-blog,执行如下命令即可打包

npm run build

打包完在前端根目录下会出现以下文件,只要有index.html和static文件夹就好了

使用Python2.7.13+django1.11.2+vue2.0开发的个人博客网站

5.使用Django的通用视图 TemplateView

找到项目根 urls.py (即djangoBlog/urls.py),使用通用视图创建最简单的模板控制器,访问 『/』时直接返回 index.html

from django.views.generic.base import TemplateView

urlpatterns
= [

url(r
'^$', TemplateView.as_view(template_name="index.html")),

]

6.配置Django项目的模板搜索路径

上一步使用了Django的模板系统,所以需要配置一下模板使Django知道从哪里找到index.html

打开 settings.py (djangoBlog/settings.py),找到TEMPLATES配置项,修改如下:

TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
#
'DIRS': [],
'DIRS': ['vue-blog/dist'],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]

7.配置静态文件搜索路径

打开 settings.py (djangoBlog/settings.py),找到 STATICFILES_DIRS 配置项,配置如下:

#Add for Vue.js
STATICFILES_DIRS
= [
os.path.join(BASE_DIR,
"vue-blog/dist/static"),
]

然后运行项目就可以看到所谓的vue界面了。

五、建立数据库

1.首先在models.py(blog/models.py)文件写入以下模型

from __future__ import unicode_literals

from django.db import models

# Create your models here.
#用户信息表
class UserMessage(models.Model):
email
=models.EmailField("邮箱地址")
gender
=models.IntegerField("性别")
def __unicode__(self):
return self.email
#用户表
class User(models.Model):
name
=models.CharField("用户名称",max_length=10)
password
=models.CharField("用户密码",max_length=30)
message
=models.OneToOneField(UserMessage,verbose_name="用户信息id")
update_time
=models.DateTimeField("更新时间")
create_time
=models.DateTimeField("创建时间")
def __unicode__(self):
return self.name
#标签表
class Tag(models.Model):
name
=models.CharField("标签名称",max_length=10)
def __unicode__(self):
return self.name
#分类表
class ArticleClassify(models.Model):
name
=models.CharField("分类名称",max_length=10)
parent_id
=models.IntegerField("父id")
def __unicode__(self):
return self.name
#文章表
class Article(models.Model):
title
=models.CharField("文章标题",max_length=30)
content
=models.TextField("文章内容")
author
=models.ForeignKey(User,verbose_name="文章作者id")
tag
= models.ManyToManyField(Tag,verbose_name="标签")
classify
=models.ForeignKey(ArticleClassify,verbose_name="分类id")
browse
=models.IntegerField("阅读量",default=0)
status
=models.IntegerField("文章状态,0:存在,1:已删除",default=0)
update_time
=models.DateTimeField("更新时间")
create_time
=models.DateTimeField("创建时间")
def __unicode__(self):
return self.title

2.构建数据库

可以选择自己重新生成

python manage.py makemigrations #列出数据库操作
python manage.py migrate #执行操作

也可以直接导入数据库,sql文件在DB文件夹下

六、构建日志服务

1.在根目录创建logger文件夹,如下:

使用Python2.7.13+django1.11.2+vue2.0开发的个人博客网站

这些文件里面的内容为空即可

2.在settings.py导入日志服务模块:

import logging
import django.utils.log
import logging.handlers

3.配置日志服务信息:

LOGGING = {
'version': 1,
'disable_existing_loggers': True,
'formatters': {
'standard': {
'format': '%(asctime)s [%(module)s:%(funcName)s] [%(levelname)s]- %(message)s'}
},
'filters': {
},
'handlers': {
'mail_admins': {
'level': 'ERROR',
'class': 'django.utils.log.AdminEmailHandler',
'include_html': True,
},
'default': {
'level':'DEBUG',
'class':'logging.handlers.RotatingFileHandler',
'filename': 'logger/all.log',
'maxBytes': 1024*1024*5,
'backupCount': 5,
'formatter':'standard',
},
'error': {
'level':'ERROR',
'class':'logging.handlers.RotatingFileHandler',
'filename': 'logger/error.log',
'maxBytes':1024*1024*5,
'backupCount': 5,
'formatter':'standard',
},
'console':{
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'standard'
},
'request_handler': {
'level':'DEBUG',
'class':'logging.handlers.RotatingFileHandler',
'filename': 'logger/request.log',
'maxBytes': 1024*1024*5,
'backupCount': 5,
'formatter':'standard',
},
'scprits_handler': {
'level':'DEBUG',
'class':'logging.handlers.RotatingFileHandler',
'filename':'logger/scprits.log',
'maxBytes': 1024*1024*5,
'backupCount': 5,
'formatter':'standard',
}
},
'loggers': {
'django': {
'handlers': ['default', 'console'],
'level': 'DEBUG',
'propagate': False
},
'django.request': {
'handlers': ['request_handler'],
'level': 'DEBUG',
'propagate': False,
},
'scripts': {
'handlers': ['scprits_handler'],
'level': 'INFO',
'propagate': False
},
'sourceDns.webdns.views': {
'handlers': ['default', 'error'],
'level': 'DEBUG',
'propagate': True
},
'sourceDns.webdns.util':{
'handlers': ['error'],
'level': 'ERROR',
'propagate': True
}
}
}

 4.使用日志服务,在views.py(blog/)文件下添加如下代码就可以在该文件中使用logging了

import logging
# Get an instance of a logger
logger
= logging.getLogger('sourceDns.webdns.views')