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
|