使用Python2.7.13+django1.11.2+vue2.0開發的個人博客網站


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM