Django中的Project和App的区别
来源:互联网 发布:js获取第一个class 编辑:程序博客网 时间:2024/06/04 18:54
Django是一个非常流行的用python编写的Web框架,在使用Django之前,我们需要了解一些基本的概念,这样可以在使用Django的时候对其有一个更加深入的把握。本文主要介绍Django中两个非常基础但又是很多初学者不太明白的概念:project和app.
Project
其实在计算机领域,要真正了解一个东西,莫过于亲自去阅读它的源代码;同理,对于Django中的project和app,我们也可以采用类似的方法。我们可以通过命令:
django-admin.py startproject mysite 来创建一个新的project,之后我们可以在当前目录下看到如下目录结构:
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
wsgi.py
其中manage.py是在开发web项目时经常用到的工具,如:python manage.py runserver localhost:8000 ; python manage.py syndb 等等,而在内部的mysite目录下放着四个py文件,其中__init__.py用于说明内部的mysite目录是一个python模块,打开settings.py文件,我们可以看到一些基本的配置信息,包括数据库配置,时区,安装的APP,中间件,日志配置,以及一些基本的目录配置等,其本质上相当于一个基本的web工程的全局配置。urls.py文件中包含一个urlpatterns变量,其实它就是一个URL Dispacher(URL分派器),用于在URL和实际的view之间建立一个映射。
App
在创建完project之后,我们可以通过命令:python manage.py startapp polls创建一个名叫polls的app,然后整个目录结构变成如下所示:
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
wsgi.py
polls/
__init__.py
models.py
views.py
test.py
很显然,上述红色部分是多出来的,即运行上述命令后做的一些事情, 其中 __init__.py用于说明polls目录是一个python模块,models.py中包含一系列的模型类,每个模型类对应数据库中的一个表,这之间的映射由Django来做,有关数据库的配置在mysite/settings.py中。而views.py中包含的是对各个请求的处理逻辑,前面说的URL Dispacher即将URL请求映射到这个文件中的函数或类方法上。同时可以在polls目录下创建template目录,然后将前台的html,css,script等内容放置在这个目录下,并在setttings.py文件添加相应的配置信息。所以,我们其实可以看到APP相当于一个相对独立的功能模块,其遵循的设计理念是MVT(类似MVC);在一个大型的Project中,可以包含很多APP,而且每个APP可以在不同的Project中复用,这也符合Django的编程理念,即:不要做重复的事情。综上所述,project和APP的区别已经很明显了,project包含一些全局配置,这些配置构成一个全局的运行平台,各个APP都运行在这个全局的运行平台上,而APP代表的是一个相对独立的功能模块,所以程序的逻辑都在APP中。
- Django中的Project和App的区别
- Django:project与app的概念区别
- Django创建Project和创建App
- Web project和java project ,web service project的区别
- Xcode工程中的Project和Target区别
- Android Project和app中两个build.gradle配置的区别
- Android Project和app中两个build.gradle配置的区别
- Django 中的 app
- Django中project下的url引入(include)app下的url
- django在project下的app目录下添加模板文件夹templates注意事项
- web project 和 web service project的区别
- myeclipse里web project和web service project的区别
- EJB project 和Dynamic web project的区别
- AndroidMenifest.xml中targetSdkVersion和project.properties中的target属性的区别
- Android Studio project和module的区别
- Android Studio project和module的区别
- Maven Project和 Maven Module的区别
- Maven创建 module和project的区别
- Codeforces Round #149 (Div. 2) E - XOR on Segment
- 十分钟掌握diff&patch用法
- cognos 地图报表开发
- C/C++常用时间函数介绍
- hdu 1728 搜索求最少的转向次数
- Django中的Project和App的区别
- cocos2d-x 显示中文字符和解析XML文件
- 成员方法,成员变量,局部变量,构造方法,构造器
- 使用ServletContextListener和HttpSessionListener两种监听器实现记录当前网站在线人数
- hadoop1.2.0 eclipse插件编译
- 蓝牙编程
- sql server 数据库优化
- HTTPS那些事
- 详解聚集索引与非聚集索引