51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

测试开发精英班,通向高级软件测试工程师【好消息】企业内训服务上线啦!项目为王,自动化测试提升加速器 !横扫BAT,Python全栈测试开发技能大全
【第118期】:大厂测试平台建设与人才标准参与调查问卷 缔造行业趋势 月薪15K+的测试开发必备技能? 【活动】为视频UP主打CALL,互动领福利!
查看: 686|回复: 1

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

[复制链接]

该用户从未签到

发表于 2019-4-1 15:11:59 | 显示全部楼层 |阅读模式

1. Django项目与Django应用

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

  1. django-admin startproject myproject
复制代码

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

  1. 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应用:


  1. INSTALLED_APPS = [
  2.     'django.contrib.admin',                        站点管理系统
  3.     'django.contrib.auth',                        认证系统
  4.     'django.contrib.contenttypes',                content types框架
  5.     'django.contrib.sessions',                        session框架
  6.     'django.contrib.messages',                        message框架
  7.     'django.contrib.staticfiles',                静态文件管理框架
  8. ]
复制代码

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)

示例如下:

  1. from django.apps import apps
  2. 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


  1. from django.apps import AppConfig
  2. class MylistsConfig(AppConfig):
  3.     name = 'mylists'
  4.     label = 'mylists'
复制代码

2) 注册到myproject/myproject/settings.py


  1. INSTALLED_APPS = [
  2.     'myproject.myapp.MylistsConfig',
  3.     # ...
  4. ]
复制代码

3) python3 manage.py makemigrations myapp

4) python3 manage.py migrate



回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2021-3-8 05:20 , Processed in 0.053946 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2021 Comsenz Inc.

快速回复 返回顶部 返回列表