看的是 Django 的文档,新创建一个 Django 项目,要在我先创建的文件夹下创建项目
$ django-admin startproject mysite
创建完项目,再创建一个应用程序( application )
$ python manage.py startapp polls
最后整个项目变成了
我的项目文件夹->mysite ( Django 项目文件夹)->polls ( Django 应用程序)
中间那个 mysite 里的文件为什么不直接在根目录创建,而要再嵌套一层呢,这样不显得复杂多了吗?
Django 为什么这么设计呢?它认为一个大项目里里面包含很多小项目,小项目里面又包含着很多 app 吗?
还是说大项目里的小项目是作为版本来划分呢?
1
Danfi 2020-06-03 17:05:45 +08:00 1
django-admin startproject mysite 后面可以加上路径
|
2
sugarkeek OP @Danfi 好的,学习了。我就是想问问,默认的一般是设计者最初的思想,特别是 Django 这种很规范化的框架,他是咋想的?
|
3
lsvih 2020-06-03 17:12:40 +08:00 1
目录结构没有硬性规范吧,我觉得 django 默认这么放还是挺科学的。app 放在各个子项目下,如果全放在 PROJECT_BASE 会很乱的。PROJECT_BASE 目录还得放很多类似 upload 、resource 、temporary 、static 之类的文件夹
|
4
locoz 2020-06-03 17:14:20 +08:00
这叫模块化...复杂是复杂了,但是复用模块什么的就会很方便,直接导入包就可以了
|
5
johnsona 2020-06-03 17:15:02 +08:00
django-admin startproject mysite .注意这个点,应该是这个,逃)
|
6
est 2020-06-03 17:21:40 +08:00 2
不为什么。因为你看的教程没对。你觉得 django 复杂了可以搜下 minimal django
from django.conf.urls import url from django.http import HttpResponse DEBUG = True SECRET_KEY = 'LZ2simple' ROOT_URLCONF = __name__ def home(request): return HttpResponse('ok') urlpatterns = [ url(r'^$', home), ] 这个就够简单了吧。 |
8
sugarkeek OP 有个讨论 django 的目录结构的帖子
https://stackoverflow.com/questions/22841764/best-practice-for-django-project-working-directory-structure 确实除了 django 创建的项目文件夹,还有其他模块需要在根目录下 |
9
Aliencn 2020-06-03 19:05:32 +08:00
我一般这么用
django-admin startproject main && mv main mysite |
10
xiaolinjia 2020-06-04 08:31:22 +08:00
嫌麻烦用 flask 不就好了,你爱放哪放哪。
然后可能你下个问题就是,我怎么组织结构才合适呢? |
11
sugarkeek OP @xiaolinjia 我没有在质疑,我问的是 Django 的设计思想,我再尝试理解 Django 的思想。
|
12
julyclyde 2020-06-04 10:09:16 +08:00
@xiaolinjia Flask 好像没带 ORM 吧?
|
13
craiiz 2020-06-04 10:23:22 +08:00
个人理解是:一个项目(e.g. mysite)会有很多模块( e.g.如客户管理、商品管理)即 app ;感觉挺科学的
|
14
craiiz 2020-06-04 10:24:28 +08:00
@xiaolinjia 最后搞完一通之后发现还是变成 django 的样子
|
15
sugarkeek OP @craiiz app 挺好理解的,我的疑问主要是是项目是在我创建的文件夹下( root directory )又创建了一个文件夹( mysite ),作为项目文件夹。
当然我现在是这么理解的,结合之前大伙的理解和我自己的理解,root directory 下除了项目文件夹,还有静态目录文件夹,还有模板( template )、文档( doc )等等,和项目文件夹( mysite )共同构成一个项目。 除此之外,我通过 Pycharm 自带的 Django 项目创建的模板发现,Pycharm 认为的 Django 是这样是 /root directory - /mysite - /app1 - /app2 - /template manage.py 也挺有意思的 |
16
xiaolinjia 2020-06-04 11:18:14 +08:00
@julyclyde flask 用的 sqlalchemy
|
17
julyclyde 2020-06-04 11:44:59 +08:00
@xiaolinjia 只是“可以用”sqlalchemy 吧,并不是“flask 用的就是 sqlalchemy”
其实 flask 配啥 ORM 都行,但好像没有自带一个 |
18
xiaolinjia 2020-06-04 11:47:31 +08:00
@julyclyde 是的。其实这个跟他们设计也有关,因为 flask 就是自由,所以他不限制你用什么 orm,就像他第三方扩展也很少有像 django 那样,是 django-xxx,而是任何 py 包。对比下 awesome-django 和 awesome-flask 就知道了。
|
19
qW7bo2FbzbC0 2020-06-18 15:07:24 +08:00
@xiaolinjia 因为 django 有自己的一套思路,spring 的很多插件也是带 spring 的吧
|
20
xiaolinjia 2020-06-18 15:37:50 +08:00
@hjahgdthab750 嗯,django 的单元是 app 。所以有很多 django-xxx 的都是实现了一整个 app 。要注册到配置的 INSTALLED_APPS 里。而 flask 自由的没有这个概念,只要是模块的任意堆砌就行。所以就不像 django 那样。
|
21
qW7bo2FbzbC0 2020-06-18 16:14:51 +08:00
@xiaolinjia 堆多了都是乱,django 是比较有规则。但是 drf 的一套写比较复杂的查询或者逻辑时比较丑
|