This project is a simple Django REST API that integrates MongoDB as the main database. It implements CRUD operations on a Pharmacies collection.
- MongoDB database to store pharmacy documents
- Django REST Framework to build the RESTful API
- djongo MongoDB adapter to connect Django and MongoDB
- Basic authentication for API endpoints
- API documentation using OpenAPI/Swagger
- API testing
- Python >= 3.8
- Django
- Django Rest Framework
- MongoDB
- Clone the repo
git@github.com:mustafa-kamel/pharmacies_api_mongodb.git - Create a virtual environment
python -m venv venv - Activate virtual environment
source venv/bin/activate - Install dependencies:
pip install -r requirements.txt - Copy the
.env.examplefile to.envruncp .env.example .env - Update the variables in
.envfile according to your configurations. - Apply migrations:
python manage.py migrate - Create a superuser:
python manage.py createsuperuser - Run the server:
python manage.py runserver
The project uses MongoDB as the backend database. Make sure MongoDB is installed locally and running on port 27017.
Create a local MongoDB database called pharmacies from MongoDBCompass or from shell using:
mongosh
use pharmaciesIf you want to use a cloud database instead you will need to add its configuration to the project settings file.
Make sure to set the following environment variables in .env:
MONGO_DB: The mongodb name.SECRET_KEY: Django secret key.DEBUG: Set toTruefor development,Falsefor production.
- Use the Django admin interface or the API endpoint
/api/users/to create a new user, Or you can do that simply from the django shell:
python manage.py shellThen you need to create a new user using this code:
from django.contrib.auth.models import User
User.objects.create_user(username="USERNAME", password="USER_PASSWORD")These user credentials will be used for basic authentication.
- Use the Django development server to run the API:
python manage.py runserver - Access the API at
http://localhost:8000/pharmacies/
- Use pytest to run tests:
coverage run -m pytest. - Generate coverage report:
coverage reportorcoverage htmlfor HTML report that shows a 99% test coverage.
- API documentation is available at http://localhost:8000/api/schema/swagger-ui/ or http://localhost:8000/api/schema/redoc/ once the server is running.
- Also check the project's Postman collection for a comprehensive API documentation, including request examples; also you can select the
pharmaciesenvironment and run the Postman collection to validate its functionality.