zoukankan      html  css  js  c++  java
  • Blog_Django(一):环境搭建、基本的配置

    我使用Django已经有一段时间,但是从没有详细的记录过一个完成小项目的过程。今天就开始记录下使用Django开发一个小项目:博客(Blog)。

    工欲善其事,必先利其器。我所采用的工具如下:

    1、IDE,我选择了PyCharm,这个取决于个人的喜欢和喜好。

    2、Django版本:我使用了最新的1.10.5

    3、图片插件:pillow

    4、前端js主要用jquery-3.1.1.js

    第一步:使用Pycharm创建工程

    第二步:修改配置文件setting中静态文件的路径

    STATICFILES_DIRS = [
      os.path.join(BASE_DIR, "static"),
    ]

    同时在Blog_Django下建立普通的文件夹static

    第三步:任何web程序都会有记录各种日志的工程。Django需要配置日志器和处理器

    LOGGING = {
        'version': 1,
        'disable_existing_loggers': True,
        'formatters': {
            'standard': {
                'format': '%(asctime)s [%(threadName)s:%(thread)d] [%(name)s:%(lineno)d] [%(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': 'log/all.log',  # 日志输出文件
                'maxBytes': 1024 * 1024 * 5,  # 文件大小
                'backupCount': 5,  # 备份份数
                'formatter': 'standard',  # 使用哪种formatters日志格式
            },
            'error': {
                'level': 'ERROR',
                'class': 'logging.handlers.RotatingFileHandler',
                'filename': 'log/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': 'log/script.log',
                'maxBytes': 1024 * 1024 * 5,
                'backupCount': 5,
                'formatter': 'standard',
            },
            'scprits_handler': {
                'level': 'DEBUG',
                'class': 'logging.handlers.RotatingFileHandler',
                'filename': 'log/script.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
            },
            'blog.views': {
                'handlers': ['default', 'error'],
                'level': 'DEBUG',
                'propagate': True
            },
        }
    }
    配置log

    对于视图函数中捕捉到的错误,我们最好存储到日志信息中。

    blog.views是自定义的日志处理器

    import logging
    
    
    logger = logging.getLogger("blog.views")
    
    
    def index(request):
        try:
            f = open("a.txt", "r")
        except Exception as e:
            logger.error(e)
        return render(request, "index.html")
    自定义日志处理器

    运行Django,在浏览器中请求http://127.0.0.1:8000/

    我们在error.log中得到如下报错信息:

    2017-02-27 17:49:12,095 [Thread-2:14068] [blog.views:19] [views:index] [ERROR]- [Errno 2] No such file or directory: 'a.txt'

    第四步:配置数据库

    我喜欢使用Mysql,轻巧而且功能齐全。

    DATABASES = {
      'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'blog_django',
        'USER': 'root',
        'PASSWORD': 'admin',
        'HOST': '127.0.0.1',
        'PORT': '3306',
      }
    }

    由于python3不支持mysqldb,会报错

    django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named 'MySQLdb'

    但是我们可以使用pymysql来代替,不过我们需要在setting文件同级的__init__.py文件中做如下配置

    import pymysql
    pymysql.install_as_MySQLdb()

    至此,Blog的环境基本搭建完毕,我们接下来会处理首页……

  • 相关阅读:
    Maven 在pom.xml的build中配置resources,来防止我们资源导出失败的问题
    JavaWeb
    MySQL
    JavaScript
    Caused by: org.apache.ibatis.exceptions.PersistenceExceptiong 更新IDEA后报错
    Loading class `com.mysql.jdbc.Driver‘. This is deprecated.警告处理,jdbc更新处
    mybatis+oracle添加数据时如果数据存在就更新,如果不存在就插入
    条件查询器Wrapper
    查询和删除
    时间和悲观锁
  • 原文地址:https://www.cnblogs.com/yangshl/p/6476989.html
Copyright © 2011-2022 走看看