Django प्रोजेक्ट में एक प्रकार की त्रुटि हो रही है
मैंने अपनी नई परियोजना के लिए एक आभासी वातावरण बनाया, django स्थापित किया और नई परियोजना शुरू की। हालाँकि, जब भी मैं manage.py के साथ एक लाइन कोड चलाता हूँ मुझे यह लंबी त्रुटि मिलती है।
PS D:\My stuff\Website development\Isow website\isow> python manage.py makemigrations
No changes detected
Traceback (most recent call last):
File "manage.py", line 22, in <module>
main()
File "manage.py", line 18, in main
execute_from_command_line(sys.argv)
File "C:\Users\rahma\AppData\Local\Programs\Python\Python37\lib\site-packages\django\core\management\__init__.py", line 381, in execute_from_command_line
utility.execute()
File "C:\Users\rahma\AppData\Local\Programs\Python\Python37\lib\site-packages\django\core\management\__init__.py", line 375, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "C:\Users\rahma\AppData\Local\Programs\Python\Python37\lib\site-packages\django\core\management\base.py", line 336, in run_from_argv
connections.close_all()
File "C:\Users\rahma\AppData\Local\Programs\Python\Python37\lib\site-packages\django\db\utils.py", line 224, in close_all
connection.close()
File "C:\Users\rahma\AppData\Local\Programs\Python\Python37\lib\site-packages\django\db\backends\sqlite3\base.py", line 248, in close
if not self.is_in_memory_db():
File "C:\Users\rahma\AppData\Local\Programs\Python\Python37\lib\site-packages\django\db\backends\sqlite3\base.py", line 367, in is_in_memory_db
return self.creation.is_in_memory_db(self.settings_dict['NAME'])
File "C:\Users\rahma\AppData\Local\Programs\Python\Python37\lib\site-packages\django\db\backends\sqlite3\creation.py", line 12, in is_in_memory_db
return database_name == ':memory:' or 'mode=memory' in database_name
TypeError: argument of type 'WindowsPath' is not iterable
डेटाबेस प्रविष्टि:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
जवाब
5 iklinac
ऐसा लगता है कि NAME को स्ट्रिंग के बजाय pathlib.Path ( WindowsPath ) ऑब्जेक्ट में परिवर्तित किया जा रहा है, जो तब Django में उसी तरह से उपयोग नहीं किया जा सकता है, जैसे os.path स्ट्रिंग्स की अपेक्षा करता है (100% सुनिश्चित नहीं है कि गहराई से जांच नहीं की गई है)
इसलिए स्ट्रिंग में कास्टिंग करना उचित होगा
'NAME': str(os.path.join(BASE_DIR, "db.sqlite3"))
2 FirePanda
सुनिश्चित करें कि आप वास्तव में venv में अपनी कमांड निष्पादित करते हैं (आपको देखना चाहिए (venv)
)
यदि आप के रूप में तो @iklinac ने कहा, यह आपकी समस्या को हल करना चाहिए:
'NAME': str(os.path.join(BASE_DIR, "db.sqlite3"))