Django 기본 URL 파일의 앱에서 URL을 가져 오는 방법

Dec 01 2020

다음과 같은 프로젝트 구조가 있습니다.

이것은 내 INSTALLED_APPS 배열입니다.

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

그런 다음 아래와 같이 clients.urls상위 urls파일에 파일 을 추가하려고했습니다 .

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

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

하지만이 오류가 발생합니다. ModuleNotFoundError: No module named 'clients'

다음 경로를 사용하여이 문제를 해결할 수 있습니다. include('climemanage.clients.urls')그러나 나는 climemanage길에서 건너 뛰고 싶다 .

나는 다른 방법을 시도했습니다.

import clients
import climemanage.clients
from climemanage import clients

그러나 아무것도 작동하지 않습니다.

답변

1 ha-neul Dec 01 2020 at 13:51

프로젝트 구조가 잘못되었습니다. 그것도 보인다 startproject일부 또는 startapp일부의 힘 사라 잘못. 이 시점까지 어떻게 지 냈는지 목록을 작성할 수 있다면 가장 좋을 것입니다. 내 답변 끝에 넣은 구조를 참조하십시오.

귀하의 경우 귀하의 메인 settings.pyclients. 이것은 clients의 결과 임을 의미합니다 startproject. 현재는 없지만 폴더 아래에 표시 app되어야하는 파일이 많이 있습니다 .appmigrations

그것의 Beause, 당신은 clients.urlsmain 에서 아무것도 추가 할 수 없습니다 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.

Ashwathama Dec 01 2020 at 13:08

기본 urls.py 파일에서 다음 코드 스 니펫을 추가 할 수 있습니다.

from django.urls import path, include 

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

settings.py 파일에서

INSTALLED_APPS = [
 'django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'rest_framework',
 'webapi',  # like in my case my appname was webapi
 'nameofyourapp', #pay attention here
]
Skip_god Dec 01 2020 at 14:19

client.urls.py 페이지를 보여주세요.