Django项目与Django应用的关系及django.apps模块

1. Django项目与Django应用

Django项目通常是使用django-admin工具创建的项目结构,执行如下命令创建Django项目myproject:

django-admin startproject myproject

而Django应用是在Django项目中,使用Django项目的manage.py(等同于django-admin工具的项目定制版)创建,在myproject/路径下执行如下命令创建应用myApp:

python manage.py startapp myApp

  • 一个Django项目就是一个基于Django的Web应用。
  • 一个Django项目中包含一组配置和若干个Django应用。
  • 一个Django应用就是一个可重用的Python软件包,提供一定的功能。
  • 一个Django应用中可以包含models, views, templates, template tags, static files, URLs等。
  • 一个Django项目可以包含多个Django应用。
  • 一个Django应用也可以被包含到多个Django项目中,因为Django应用是可重用的Python软件包。

2. myproject/myproject/settings.py中的变量INSTALLED_APPS
该变量的值是一个list,给出在Django项目中包含的Django应用。
Django框架默认情况下,Django项目中包含如下Django应用:

INSTALLED_APPS = [
    'django.contrib.admin',			站点管理系统
    'django.contrib.auth',			认证系统
    'django.contrib.contenttypes',		content types框架
    'django.contrib.sessions',			session框架
    'django.contrib.messages',			message框架
    'django.contrib.staticfiles',		静态文件管理框架
]

3. django.apps模块

在Python代码中,可以使用django.apps.apps引用上述settings.py中的INSTALLED_APPS变量。django.apps.apps也被称为应用注册器,提供如下public的方法:

  • apps.ready()
  • apps.get_app_configs()
  • apps.get_app_config(my_app_label)
  • apps.is_installed(my_app_name)
  • apps.get_model(my_app_label, my_model_name, require_ready=True)
示例如下:

from django.apps import apps
apps.get_app_config('admin').verbos_name
上述Python脚本执行,输出'Admin'。

事实上,一个Django应用就是一个django.apps.AppConfig类的扩展子类。


4. 在myproject项目中创建一个Django应用myapp

我们都熟悉了使用manage.py在Django项目中创建Django应用的方式,下面以Python代码的方式直接创建Django应用。

1) 编辑myproject/myapp/apps.py

from django.apps import AppConfig
class MylistsConfig(AppConfig):
    name = 'mylists'
    label = 'mylists'

2) 注册到myproject/myproject/settings.py
INSTALLED_APPS = [
    'myproject.myapp.MylistsConfig',
    # ...
]

3) python3 manage.py makemigrations myapp


4) python3 manage.py migrate


参考链接:

https://docs.djangoproject.com/en/1.11/ref/applications/

你可能感兴趣的:(Django,Python)