• 使用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')
  • 相关阅读:
    2017《Java技术》预备作业 计科1501 杨柳
    Java技术预备作业02 计科1501杨柳
    H2O.ai初步使用
    Vue.Js加入bootstrap及jquery,或加入其他插件vueresource,vuex等
    初次使用git上传代码(转)
    svg绘图工具raphael.js的使用
    EF6添加mysql的edmx实体时报错:无法生成模型:“System.Data.StrongTypingException: 表“TableDetails”中列“IsPrimaryKey”的值为 DBNull
    在window下搭建Vue.Js开发环境
    SQL Server: 索引碎片产生及修复
    Windows注册表(regedit.exe)
  • 原文地址:https://www.cnblogs.com/jieru/p/7144707.html
Copyright © 2020-2023  润新知