Django main urls फ़ाइल में ऐप्स से 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.pyअधीन है clients। इसका मतलब है कि इसका clientsपरिणाम है startproject। वर्तमान में आपके पास एक नहीं है app, लेकिन आपके पास फ़ाइलों का एक गुच्छा है जो appउस migrationsफ़ोल्डर में अब उसके साथ दिखाई देना चाहिए ।

इसका उपयोग, आप clients.urlsमुख्य से कभी भी कुछ भी नहीं जोड़ पाएंगे urls.py। क्योंकि आपका clientsवह स्थान है जहां आपका मुख्य urls.pyस्थित है।

मैंने सामान्य रूप से यहां क्या किया (यह मैक संस्करण, यदि आप विंडोज़ का उपयोग कर रहे हैं, तो आपको django tutorial की आवश्यकता है)

$ 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.pyऔर forms.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 पेज दिखाएं।