python - 如何从 django 主 url 文件中的应用程序导入 url

标签 python django

我有以下项目结构。

Django Project Structure

这是我的 INSTALLED_APPS 数组。

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'climemanage.clients'
]

然后我尝试在父 urls 文件中添加 clients.urls 文件,如下所示。

from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path('admin/', admin.site.urls),
    path('clients/', include('clients.urls'))
]

但是我收到了这个错误。 ModuleNotFoundError:没有名为“clients”的模块

我可以使用以下路径解决这个问题。 include('climemanage.clients.urls') 但我想从路径中跳过 climemanage

我尝试过不同的方法,

import clients
import climemanage.clients
from climemanage import clients

但是没有任何效果。

最佳答案

您的项目结构错误。看来要么 startproject部分或startapp部分可能出了问题。如果您能列出您是如何走到这一步的,那可能是最好的。请参阅我在答案末尾放置的结构。

就您而言,您的主要 settings.py位于clients下。这意味着clientsstartproject 的结果。目前您没有app ,但是您有一堆应该以 app 出现的文件现在在migrations下文件夹。

因此,您将永远无法添加 clients.urls 中的任何内容到主 urls.py 。因为你的clients是你主要的地方urls.py位于。

我把我平时做的放在这里(这个是mac版本,如果你用的是windows,需要查看django教程)

$ mkdir clienmanage
$ cd clienmanage
$ python3 -m venv myvenv      # set up virtual environment
$ source myvenv/bin/activate  # go into virtual envionment
After this step you can install django

然后,当您运行 startproject 时命令,确保像下面这样运行:

django-admin startproject project .

注意 .在最后。

之后,您应该具有如下结构:

clienmanage
|--- manage.py
|--- project
|   |--- __init__.py
|   |--- settings.py
|   |--- urls.py
|   |--- wsgi.py
|--- virtual
|
|___ requirements.txt

然后你会:

$ python manage.py startapp clients

clienmanage
|
|---clients # this is the app
|    |---migrations
|    |---models.py
|    |---views.py
|    |---apps.py  
|--- manage.py
|--- project
|   |--- __init__.py
|   |--- settings.py
|   |--- urls.py
|   |--- wsgi.py
|--- virtual # a folder
|
|___ requirements.txt

这一步之后django就不会自动生成app了级别 urls.pyforms.py 。您应该在 app 内生成这些文件文件夹(在我的示例中, clients )

****如果您想将应用程序放在不同的目录中 您可以指定目的地。

$ python manage.py startapp <app_label> [destination] 

在上述情况下,如果您想要 app project里面

$ python manage.py startapp clients project/clients

如果您选择此路线,请务必添加 project.clients而不是clients在你的INSTALLED_APPS .

关于python - 如何从 django 主 url 文件中的应用程序导入 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65090684/

相关文章:

python - django 1.10 媒体图像不显示

python - 模块名称中的 async 关键字阻止导入

python - 如何在python中屏蔽对象的轮廓

python - 在 PIL ImageGrab 模块 Python 上调整 RGB

python - 如何修复 'ValueError: input tensor must have rank 4' ?

python - Django/AngularJS : CSFR Token Error

python - 为什么 "getcontext().prec = 2"没有实际设置它,以便 Decimal() 的使用达到两位小数?

自定义表单中的 Django 日历小部件

django - 在 Django 中建模产品订单

python - 如何在 Django Rest Framework 中处理 PUT 请求