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 myapp4) python3 manage.py migrate
支持分享
页:
[1]