django1.10框架了解


记录一下django的启动过程,通常在开发阶段使用./manage.py  subcommand options启动项目。
import os
import sys


if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project_demo.settings")
    try:
        from django.core.management import execute_from_command_line
    except ImportError:
        # The above import may fail for some other reason. Ensure that the
        # issue is really that Django is missing to avoid masking other
        # exceptions on Python 2.
        try:
            import django
        except ImportError:
            raise ImportError(
                "Couldn't import Django. Are you sure it's installed and "
                "available on your PYTHONPATH environment variable? Did you "
                "forget to activate a virtual environment?"
            )
        raise
    execute_from_command_line(sys.argv)
查看manage.py文件,首先将本项目的settings文件位置放入系统变量之中,然后启动django.core.management中的execute_from_command_line方法,正式进入Django框架处理的过程。
框架的处理方法主要集中在django包中,我们看看该包中都含有写什么文件

简单介绍一下每个文件的用途:
Apps,处理app载入等问题,存储已经载入的所有app
Bin,django-admin文件,框架启动的入口之一
Conf,主要有两个作用:1) 处理全局配置, 比如数据库、加载的应用、MiddleWare等      2) 处理urls配置, 就是url与View的映射关系。
Contrib,由Django的开发者贡献的功能模块,不过既然都已经随版本发布,就表示是官方的。
Core,Django的核心处理库,包括url分析、处理请求、缓存等,其中处理请求是核心了,比如处理fastcgi就是由wsgi.py处理。
Db,顾名思义,处理与数据库相关的,就是ORM。
Dispatch,其实这不是Django原创,是pydispatch库,主要处理消费者-工作者模式。
Forms,处理html的表单,不用多介绍。
Http,request、response、cookie等处理
Middleware,中间件,就是处理HTTP的request和response的,类似插件。比如默认的common中间件的一个功能:当一个页面没有找对对应的pattern时,会自定加上?/?重新处理。比如访问/blog时,而定义的pattern是?^blog/$?,所以找不到对应的pattern,会自动再用/blog/查找,当然前提是APPEND_SLASH=True。
Template,Django的模板。
Templatetags,处理Application的tag的wrapper,就是将INSTALLED_APPS中所有的Templatetags目录添加到Django.Templatetags目录中,则当使用{ {load blog}}记载tag时,就可以使用import Django.Templatetags.blog 方式加载了。不过这有一个问题,如果其他Application目录中也有blog.py,这会加载第一个出现blog.py的tag。其实在Django中,有许多需要处理重名的地方,比如Template,需要格外小心,这个后续在介绍。
Test,测试相关
Urls,url处理
Utils,公共库,很多公用的类都在放在这里。
Views,最基本的View方法。
接下来看看execute_from_command_line函数是如何做的:
def execute_from_command_line(argv=None):
    """
    A simple method that runs a ManagementUtility.
    """
    utility = Manageme
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值