如何在Django中创建子应用程序?

jam*_*ida 45 django

我是Django的新手,但在编程方面经验丰富.我有一组的,我想组到部分应用程序,但无法弄清楚如何让manage.py为我做这个相关的应用.

理想情况下,我最终会得到如下结构:

project/
   app/
       subapp1/
       subapp2/
Run Code Online (Sandbox Code Playgroud)

我试过manage.py startapp app.subapp1manage.py startapp app/subapp1
,但是这告诉我,/.无效字符的应用程序的名称.

我已经尝试更改到app目录并运行,../manage.py subapp1但这使supapp1处于顶层.注意,我不是要直接制作一个独立的应用程序.我正试图在一个项目中做所有这些.

seb*_*piq 53

你仍然可以这样做:

cd app
django-admin startapp subapp1
Run Code Online (Sandbox Code Playgroud)

这将工作(创建应用程序基础结构),但appsubapp1仍然被认为是在这个意义上,你必须两者添加两个不相关的应用程序INSTALLED_APPS在你的设置.

这回答了你的问题了吗 ?否则你应该详细说明你想要做什么.

  • 这就是它的完成方式,但通常该命令称为`django-admin.py`。此外,在 `INSTALLED_APPS` 中,您需要放置 `project.app` 和 `project.app.subapp1` 等。 (2认同)
  • @sebpiq `django-admin` 可以方便地在 *Ubuntu* 中用作 `django-admin.py` 的快捷方式,如果您的计算机是这种情况的话。 (2认同)

Sim*_*Jie 20

根据Django文档,

如果提供了可选目标,Django将使用该现有目录而不是创建新目录.您可以使用 '.' 表示当前的工作目录.

例如:

django-admin startapp myapp/Users/jezdez/Code/myapp

所以,你可以通过这种方法来做到这一点:

  1. sub_app1app目录中创建目录
  2. python manage.py startapp sub_app1 app/sub_app1

  • 这应该是公认的答案。用`manage.py`创建新应用的正确方法是:`python manage.py startapp name [directory]`其中`name`是应用名称,并且有一个可选的参数目录。从帮助中:*在当前目录或给定目录中为给定应用程序名称创建Django应用程序目录结构。* (3认同)

Pra*_*ant 16

这很简单

第 1 步 - 创建项目

django-admin startproject app
cd app
Run Code Online (Sandbox Code Playgroud)

第 2 步 - 创建 api 文件夹

mkdir api
cd api
touch __init__.py
cd ..
Run Code Online (Sandbox Code Playgroud)

第 3 步 - 创建嵌套应用程序

python manage.py startapp user ./api/user
python manage.py startapp post ./api/post
python manage.py startapp comment ./api/comment
Run Code Online (Sandbox Code Playgroud)

第 4 步 - 注册嵌套应用程序

INSTALLED_APPS = [
    ...
    'api.user',
    'api.post',
    'api.comment',
]
Run Code Online (Sandbox Code Playgroud)

第 5 步 - 更改应用程序名称

更新所有三个应用程序中 apps.py 文件中的名称

class UserConfig(AppConfig):
    default_auto_field = 'django.db.models.BigAutoField'
    name = 'api.user'

class PostConfig(AppConfig):
    default_auto_field = 'django.db.models.BigAutoField'
    name = 'api.post'

class CommentConfig(AppConfig):
    default_auto_field = 'django.db.models.BigAutoField'
    name = 'api.comment'   

 
Run Code Online (Sandbox Code Playgroud)

我们完成了!

注意:第2步很重要


Ign*_*ams 11

Django本身不支持"子应用程序".如果您希望在应用程序的包中收集代码,那么只需自己创建.否则你只是在寻求痛苦.


小智 6

转到您的应用程序文件夹.尝试:

python ../manage.py startapp app_name
Run Code Online (Sandbox Code Playgroud)

  • 如果创建了应用程序,如何添加到我的设置中?使用 `app.app_name` 还是仍然使用 `app_name`? (2认同)