اذهب إلى المحتوى

السؤال

Recommended Posts

  • 3
نشر

في الماضي كان جانغو Django يقوم بتخزين BASE_DIR في شكل نص عادي String لذلك كان يمكنك أن تقوم بإستخدام الكود التالي:
 

import os

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

وكان يمكنك أن تقوم بعمل المسارات من خلال الكود التالي:
 

os.path.join(BASE_DIR, ...)

لكن بداية من الإصدار 3.1 أصبح جانغو يحتاج إلى أن يكون المتغير BASE_DIR عبارة عن كائن Path لذلك يجب أن تستخدم الكود التالي:

from pathlib import Path

BASE_DIR = Path(__file__).resolve(strict=True).parent.parent

وأصبح يمكنك إنشاء المسارات من خلال الكود التالي:

BASE_DIR / 'subdir'

وبالتالي يكون عمل المسارت أمرًا أسهل بكثير من خلال الكود السابق.

ملاحظة: لن تجد هذا التغير إن قمت بترقية مشروعك إلى الإصدار 3.1 ولكن إن قمت بإنشاء مشروع جديد ستجد أن هذا التغير موجود في الملف settings.py

  • 1
نشر

كلا السطرين يقوم بجلب مسار المجلد الحاوي على المجلد الأب (أي مستويين إلى الأعلى)

الفرق أن ()resolve ستقوم بمعالجة أي مسارات نسبية في المسار الممرر لها، وأيضا تقوم بمعالجة أي ذكر لوصلات رمزية Symbolic Links،

لكن في حالتك هذه أنت تمرر المتغير __file__ وبالتالي أنت لا تستفيد من هذه المزايا، بالتالي الحالتين متماثلتين لديك

# بفرض الملف الحالي
# /path/to/current/file.py

BASE_DIR = Path(__file__).resolve().parent.parent # /path/to

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # /path/to

 

  • 0
نشر
بتاريخ 2 ساعات قال سامح أشرف:

في الماضي كان جانغو Django يقوم بتخزين BASE_DIR في شكل نص عادي String لذلك كان يمكنك أن تقوم بإستخدام الكود التالي:
 


import os

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

وكان يمكنك أن تقوم بعمل المسارات من خلال الكود التالي:
 


os.path.join(BASE_DIR, ...)

لكن بداية من الإصدار 3.1 أصبح جانغو يحتاج إلى أن يكون المتغير BASE_DIR عبارة عن كائن Path لذلك يجب أن تستخدم الكود التالي:


from pathlib import Path

BASE_DIR = Path(__file__).resolve(strict=True).parent.parent

وأصبح يمكنك إنشاء المسارات من خلال الكود التالي:


BASE_DIR / 'subdir'

وبالتالي يكون عمل المسارت أمرًا أسهل بكثير من خلال الكود السابق.

ملاحظة: لن تجد هذا التغير إن قمت بترقية مشروعك إلى الإصدار 3.1 ولكن إن قمت بإنشاء مشروع جديد ستجد أن هذا التغير موجود في الملف settings.py

Django version 3.2.9, using settings 'project.settings'

وجهتني مشكلة اخرة

  • 0
نشر
بتاريخ 19 دقائق مضت قال Haitham Owda2:

 

عليك تعديل الملف url.py ليحتوي على مسار فارغ، كالتالي:

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('polls.urls'))	# عليك أن تقوم بتغير polls.urls إلى مسار الصفحة الرئيسية
]

أو إستخدام ملفات العرض views -إن كان لديك واحد-:

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', main_views.homepage),	# عليك أن تقوم بتغير main_views.homepage إلى مسار الصفحة الرئيسية
]

 

  • -1
نشر
بتاريخ 2 ساعات قال سامح أشرف:

عليك تعديل الملف url.py ليحتوي على مسار فارغ، كالتالي:


urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('polls.urls'))	# عليك أن تقوم بتغير polls.urls إلى مسار الصفحة الرئيسية
]

أو إستخدام ملفات العرض views -إن كان لديك واحد-:


urlpatterns = [
    path('admin/', admin.site.urls),
    path('', main_views.homepage),	# عليك أن تقوم بتغير main_views.homepage إلى مسار الصفحة الرئيسية
]

 

 

2.png

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...