يتيح لك Discovery إنشاء واجهة برمجة تطبيقات من قاعدة بيانات حالية مع الحد الأدنى من الجهد. يعتمد هذا المشروع على مسبع شابدا راج. يمكنك أيضًا الاستفادة من Capabilties من إطار REST Django لتطبيق تصفية وتوليد الوثائق. يمكن العثور على أمثلة في دليل examples .
لا يمكن الوصول إلى البيانات دائمًا في التطبيقات القديمة. قد تكون في موقف تحتاج فيه إلى الوصول إلى بيانات الإبلاغ أو النماذج الأولية لأدوات جديدة. يمكن أن تكون إضافة وظائف جديدة إلى البرمجيات القديمة باهظة التكلفة وهذا الحل يهدف إلى إجراء هذه المشكلة.
لتوليد المخطط الناجح ، تحتاج إلى وجود مفتاح أساسي في الجدول. خلاف ذلك ، سيتم تجاهله بصمت.
pip install djangorestframework-discovery في settings.py الخاصة بك.
INSTALLED_APPS = [
# ...
"rest_framework" ,
"rest_framework_discovery" ,
] أضف متغيرًا إلى settings.py DISCOVERY_ALIAS_NAME يمكنك استخدام أي قيمة ، ولكن يوصى discovery . سوف تستخدم ذلك لتحديد قاعدة البيانات التي ترغب في استخدامها لتوليد ViewSet.
DISCOVERY_ALIAS_NAME = 'discovery'
DATABASES = {
'default' : {
'ENGINE' : 'django.db.backends.sqlite3' ,
'NAME' : os . path . join ( BASE_DIR , 'db.sqlite3' ),
},
'discovery' : {
'NAME' : 'YOUR_DB_NAME' ,
'ENGINE' : 'django.db.backends.postgresql' ,
'USER' : 'YOUR_DB_USER' ,
'PASSWORD' : 'YOUR_DB_PASSWORD' ,
'HOST' : 'YOUR_DB_HOST' ,
'PORT' : 'YOUR_DB_PORT' ,
},
} أضف الأنماط التي تم إنشاؤها إلى بقية التطبيق الخاص بك عن طريق تعديل urls.py
urlpatterns = [
# ...
url ( r'^api/discovery/' , include ( 'rest_framework_discovery.urls' )),
] ستحتاج أيضًا إلى تضمين DEFAULT_SCHEMA_CLASS بشكل صريح في settings.py . انظر تفاصيل إضافية ..
REST_FRAMEWORK = {
...
'DEFAULT_SCHEMA_CLASS' : 'rest_framework.schemas.coreapi.AutoSchema'
} يمكنك الركض من خلال جناح الاختبار عن طريق تشغيل runtests.py أو tox .
يمكنك تكوين ما يلي في settings.py .
DISCOVERY_ALIAS_NAME : (مطلوب) اسم الاسم المستعار لقاعدة البيانات لاستخدامه مع الاكتشاف.DISCOVERY_READ_ONLY : (اختياري) True أو False ، سواء كان ذلك أو لا يجب أن تكون القراءة فقط.DISCOVERY_INCLUDE : (اختياري) قائمة من الجداول التي ترغب في تضمينها فقط .DISCOVERY_EXCLUDE : (اختياري) قائمة من الجداول التي ترغب في تجاهلها.