一、安裝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')