Django中的Project和App的区别
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的区别的更多相关文章
- [转] datetime.now、datetime.utcnow以及Django中的timezone.now之间的区别
https://blog.csdn.net/sinat_41898105/article/details/80984298 在我们使用Django做项目时经常会遇到时间的存储与读取不一致的问题 ...
- django中的filter和get的区别 (MultipleObjectsReturned: get() returned more than one Publisher --)(DoesNotExist: Publisher matching query does not exist.)
上面的例子中`` filter()`` 函数返回一个记录集,这个记录集是一个列表. 相对列表来说,有些时候我们更需要获取单个的对象, `` get()`` 方法就是在此时使用的: >>&g ...
- django中forms和modelform组件的区别
首先,我们来看看modelform的实现 model.py class Book(models.Model): title=models.CharField(max_length=32) price= ...
- Django中的APP
3. Django中的APP: 什么是APP?以及为什么要用APP? project --> 项目 (老男孩教育大学校) APP --> 应用 (Linux学院/Python学院/大数据学 ...
- app包中的fragment和v4包中的fragment的使用的区别
app包中的fragment和v4包中的fragment的使用的区别 1.尽量不要用app包中的fragment,因为这个是在3.0之后才有的,支持的版本太高,在低版本中是是用不了的 2.androi ...
- Django中STATIC_URL、STATIC_ROOT、STATICFILES_DIRS 的区别关系
首先,我们配置静态文件,要在setting.py里面加入如下几行代码: settings.py # the settings above # STATIC SETTINGS STATIC_URL = ...
- cookie和session的区别及在Django中应用
Django中Cookie和session应用 什么是cookie? cookie是客户端浏览器上的一个文件,以键值对进行保存,类似于字典的 {'key' : 'value'} ,与服务器端没有关系, ...
- Django中的app及mysql数据库篇(ORM操作)
Django常见命令 在Django的使用过程中需要使用命令让Django进行一些操作,例如创建Django项目.启动Django程序.创建新的APP.数据库迁移等. 创建Django项目 一把我们都 ...
- django中app分组
08.13自我总结 django中app分组 一.django路由系统app进行分组 1.创建app 使用pycharm创建django的时候, 加上app的名字,后续多个app只需复制粘贴之前app ...
随机推荐
- ASP.NET web api 跨域请求
1.学习文章:AJAX 跨域请求 - JSONP获取JSON数据 1.asp.net代码 参考文章:http://www.sxt.cn/info-2790-u-756.html (1).增加CorsH ...
- ES6新特性1:let和const
本文摘自ECMAScript6入门,转载请注明出处. 一.let 1. ES6增了let命令,用来声明变量.它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效. { let a ...
- TensorFlow Activation Function 1
部分转自:https://blog.csdn.net/caicaiatnbu/article/details/72745156 激活函数(Activation Function)运行时激活神经网络中某 ...
- 内存,缓存,cpu,硬盘关系
RAM(random access memory)即随机存储内存,这种存储器在断电时将丢失其存储内容,故主要用于存储短时间使用的程序.我把它叫耗电存储器 ROM(Read-Only Memory)即只 ...
- Python学习笔记系列——高阶函数(filter/sorted)
一.filter #filter()函数用于过滤序列.和map()类似,也接收一个函数和一个序列,把函数依次作用于每个元素,根据返回值是True还是False决定是否保留该元素. #filter()函 ...
- listener.ora 与 tnsnames.ora
listener.ora 是oracle服务器端的网络配置文件,oracle 根据它来配置监听服务. tnsnames.ora 类似于unix 的hosts文件,提供的tnsname到主机名或者ip的 ...
- STL容器与拷贝构造函数
所有容器提供的都是“value语意”而非“reference语意”.容器内进行元素的安插操作时,内部实施的是拷贝操作,置于容器内.因此STL容器 的每一个元素都必须能够拷贝.---<<C+ ...
- Activiti6.0 java spring5 SSM 工作流引擎 审批流程 项目框架
1.模型管理 :web在线流程设计器.预览流程xml.导出xml.部署流程 2.流程管理 :导入导出流程资源文件.查看流程图.根据流程实例反射出流程模型.激活挂起 3.运行中流程:查看 ...
- 对象关系映射(ORM)
1.什么是 对象-关系映射 对象-关系映射(Object Relational Mapping,简称ORM,对象关系映射)是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. 简单的说,OR ...
- # pc端个性化日历实现
pc端个性化日历实现 技术:vue => v-for.slot-scop 插槽域 需求:需要实现日历上每一天动态显示不同的信息 思路:运用vue 中 slot-scop 插槽域的知识点,将个性化 ...