分类目录归档:Django

django源码分析-db模块分析


db模块实现django模型到数据库的映射,即实现对象关系映射(Object-Relation-Mapping)。

该模块下面包含的内容:

  • backends :对后台数据库的支持,例如:mysql、oracle、sqlite3、postgresql等。
  • migrations :实现数据库的迁移,由模型自动生成数据库表。
  • models : django模型,包括字段类型,函数,sql映射等。
  • init.py : 模块初始化文件,实现数据库连接管理。
  • transaction.py : 实现django对数据库的支持。
  • utils.py : 数据库工具类,各种自定义异常,连接管理类。

更多...

阅读全文...

django源码分析-core模块分析


core模块是django系统的核心模块:

  • cache : django系统缓存模块
  • checks : 系统检查框架是一组用于验证Django项目的静态检查。它可以检测常见问题并提供有关如何解决这些问题的提示。该框架是可扩展的,因此您可以轻松添加自己的检查。
  • files : 实现对文件的处理,例如:文件上传、下载等。
  • handlers : 而当我们运行了manage.py runserver后,将会生成一个进程来运行WSGIHandler实例,来响应用户的请求,其实WSGIHandler就是handlers。django收到请求之后,首先由处理器处理,然后分发给各种中间件,这些中间件包...

阅读全文...

django源码分析-contrib模块分析


contrib模块下面的内容是django系统提供的一些应用(app):它们分别是:

  • admin: django后台管理应用,可以实现用户和权限的管理,可以实现对注册的模型进行管理,实现添加删除修改查询等功能。
  • admindocs: 这个应用是admin后台管理的文档。
  • auth: django权限管理应用,可以实现用户权限的管理,用户登录注册退出等功能。
  • contenttype : django 内容类型,当你需要修改表的结构时,可以用到内容类型,ontent_type表将app名称与其中的表的关系进行保存。
  • flatpages : 可以创建单个页面,例如:关于我们等单页。
  • gis ...

阅读全文...

django源码分析-global_settings.py源码分析


首先,我们来看看这个文件的全貌,我们项目里面的settings.py配置文件里面的配置项都来自这里。

"""
Default Django settings. Override these with settings in the module pointed to
by the DJANGO_SETTINGS_MODULE environment variable.
"""


# This is defined here as a do-nothing function because we can't import...

阅读全文...

django源码分析-conf模块分析


conf模块是一个系统配置模块,该模块有如下内容:

  • app_template : 应用 源码模板 注意这里是源码模板,不是页面模板,django系统会根据这些模板自动生成.py文件想,下面我们看几个源码模板:

admin.py-tpl

from django.contrib import admin

# Register your models here.

apps.py-tpl

from django.apps import AppConfig


class {{ camel_case_app_name }}Config(AppConfig):
    name = '...

阅读全文...

django源码分析-bin分析


bin不是一个模块,而是一个目录,下面有一个重要的文件是django-admin.py,该文件就是你在创建django项目时,在命令行运行的文件,它会执行各种命令。

django-admin.py内容

#!/usr/bin/env python
from django.core import management

if __name__ == "__main__":
    management.execute_from_command_line()

运行该文件会调用django.core模块下面的management模块里面的execute_from_comma...

阅读全文...

django源码分析-apps模块分析


apps模块下面的三个文件

init.py : 模块初始化文件。

from .config import AppConfig
from .registry import apps

__all__ = ['AppConfig', 'apps']

导入AppConfig类和apps变量,appsApp类的实例,通过registry.py源码可以知道,apps = Apps(installed_apps=None)

config.py : 主要作用是创建应用,构造函数如下:

class AppConfig:
    """C...

阅读全文...

django源码分析-项目结构


  • apps: django应用模块,主要管理应用配置和应用管理。
  • bin: django-admin 管理命令入口。
  • conf: django系统配置,全局配置、locale、urls配置、项目模板和app模板。
  • contrib: django系统提供的应用,例如:后台管理admin、sessions管理、静态文件管理staticfiles等。
  • core: django系统核心包,缓存管理、邮件管理、文件管理、服务器、管理命令等。
  • db: django 数据库管理,实现数据到python对象的对象关系映射(ORM)。
  • dispatch: 实现django请求分发。
  • forms: djan...

阅读全文...

Django 静态资源压缩插件django-compressor


django-compressor 是一个静态资源压缩插件,可以将CSS、JS文件压缩到一个文件中,从而减少网络下载时间。

安装

pip install django_compressor

添加compressorsettings.py配置文件 INSTALLED_APPS

INSTALLED_APPS = (
    # other apps
    "compressor",
)

STATICFILES_FINDERS 配置

STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFind...

阅读全文...

是否可以在命令行使用Django


虽然django主要用于Web应用程序,但它具有功能强大且易于使用的ORM,也可用于CLI应用程序。要将django脚本用作没有Web服务器的独立脚本,您需要做的就是将以下内容添加到文件的顶部。

import os, sys
if __name__ == '__main__':
    # Setup environ
    sys.path.append(os.getcwd())
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "main.settings")

    # ...

阅读全文...