• 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的环境基本搭建完毕,我们接下来会处理首页……

  • 相关阅读:
    语言精粹【摘要】
    【转】一个Java程序员应该掌握的10项技能
    比较有用的网址
    推荐一些国内的Jquery CDN免费服务
    CSS3动画【归纳总结】
    scrollTo与border结合使用的小玩意
    aria-label及aria-labelledby应用//////////[信息无障碍产品联盟]
    aria初探(一)
    没有this的JavaScript
    Front-end Job Interview Questions
  • 原文地址:https://www.cnblogs.com/yangshl/p/6476989.html
Copyright © 2020-2023  润新知