一、安装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文件夹就好了
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文件夹,如下:
这些文件里面的内容为空即可
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')