A descoberta permite criar uma API a partir de um banco de dados existente com um esforço mínimo. Este projeto é baseado no apoio de livros de Shabda Raaj. Você também pode aproveitar as capabiltadas da estrutura de REST do Django para aplicar a geração de filtragem, paginação e documentação. Exemplos podem ser encontrados no diretório de examples .
Os dados nem sempre são acessíveis em aplicativos herdados. Você pode estar em uma situação em que precisa de acesso aos dados para relatar ou prototipar novas ferramentas. A adição de novas funcionalidades ao software herdado pode ser proibitivo de custo e esta solução visa trabalhar com esse problema.
Para uma geração de esquema bem -sucedida, você precisa ter uma chave primária presente na tabela. Caso contrário, será silenciosamente ignorado.
pip install djangorestframework-discovery Em seus settings.py :
INSTALLED_APPS = [
# ...
"rest_framework" ,
"rest_framework_discovery" ,
] Adicione uma variável ao seu settings.py nomeado DISCOVERY_ALIAS_NAME . Você pode usar qualquer valor, mas discovery é recomendada. Você usará isso para definir o banco de dados que deseja usar para a geração do 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' ,
},
} Adicione os padrões gerados ao restante do seu aplicativo modificando os urls.py
urlpatterns = [
# ...
url ( r'^api/discovery/' , include ( 'rest_framework_discovery.urls' )),
] Você também precisará incluir DEFAULT_SCHEMA_CLASS explicitamente no settings.py para fazer isso funcionar. Veja detalhes adicionais ..
REST_FRAMEWORK = {
...
'DEFAULT_SCHEMA_CLASS' : 'rest_framework.schemas.coreapi.AutoSchema'
} Você pode executar o conjunto de testes executando runtests.py ou tox .
Você pode configurar o seguinte em settings.py :
DISCOVERY_ALIAS_NAME : (requerido) O nome do alias do banco de dados a ser usado com a descoberta.DISCOVERY_READ_ONLY : (Opcional) True ou False , independentemente de os views serem ou não somente leitura.DISCOVERY_INCLUDE : (Opcional) Uma lista de tabelas que você gostaria de incluir apenas .DISCOVERY_EXCLUDE : (Opcional) Uma lista de tabelas que você gostaria de ignorar.