https://github.com/hemanta212/django-rest
Simple REST API projects with django and django-rest-framework.
https://github.com/hemanta212/django-rest
django django-rest-framework rest
Last synced: 7 months ago
JSON representation
Simple REST API projects with django and django-rest-framework.
- Host: GitHub
- URL: https://github.com/hemanta212/django-rest
- Owner: hemanta212
- License: mit
- Created: 2021-04-04T14:11:47.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2021-04-27T11:27:58.000Z (over 4 years ago)
- Last Synced: 2025-01-12T18:14:18.265Z (9 months ago)
- Topics: django, django-rest-framework, rest
- Language: Python
- Homepage:
- Size: 318 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Django REST API's with Django Rest Framework
- Django Docs: https://docs.djangoproject.com/en/3.2/
- Django Rest Framework: https://www.django-rest-framework.org/## Included Projects
There are 3 different projects located in separated branch of this git repo.
The installation and running instructions are located in the respective readme files.1. [django-library](https://github.com/hemanta212/django-rest/tree/django-library): A basic book library app with basic html template and DRF api backend
2. [react-todo](https://github.com/hemanta212/django-rest/tree/react-todo): React.js frontend powered by the django backend api
3. master or [blog-api](https://github.com/hemanta212/django-rest/tree/blog-api): A fully featured blog api powered by DRF## BLOG API
### FEATURES
- Documentation with Swagger and Redoc
- Basic testing of models with built-in django testing
- Using Viewsets and Routers
- Token authentication and user registration### Installation
**Note**:
Use requirements-dev.txt instead of requirements.txt if you need pylint, black, httpie etc.- With pip
- Windows```
$ python -m venv .venv
$ .venv\Scripts\activate
$ python -m pip install -r requirements.txt
```- Unix/Linux
```
$ python -m venv .venv
$ source .venv/bin/activate
$ python -m pip install -r requirements.txt
```- With Poetry
```
$ poetry install# Activates virtual environment
$ poetry shell
```#### Running Projects
```
$ python manage.py migrate
$ python manage.py createsuperuser
$ python manage.py runserver
```Navigate to the localhost:8000/api/v1/ and you should see post lists endpoint.
Also navigate to localhost:8000/admin/ and login for admin panel to easily create new users and posts.
#### Running Tests
```
$ python manage.py test
```#### Access Docs
The swagger and redoc docs are hosted at localhost:8000/swagger/ or /redoc/ respectively.You can also generate a schema yaml file
```
$ python manage.py generateschema > api-schema.yml
```### Accessing the API
Lets see how we can interact with a running api with httpie. (You may need to install it with pip install httpie)```
# Registering user
$ http -f post localhost:8000/api/v1/user-auth/registration/ username='test' password1='testpass' password2='testpass'# Generating token from existing user
$ http -f post localhost:8000/api/v1/user-auth/login/ username='httpie' password='httpiepass'# Accesing list of users; REPLACE TOKEN FROM PREVIOUS COMMAND!
$ http get localhost:8000/api/v1/user/ AUTHORIZATION:'Token '# eg. 'Token c9892bb13fe57681a2687057eec4994b94ffd7a5'
# Create a post. You can view your author id with in previous users list
$ http -f post localhost:8000/api/v1/ author=2 title='HTTPIE' body='hello' AUTHORIZATION:'Token '# Update a post
$ http -f put localhost:8000/api/v1/1/ author=2 title='Updated title' body='hello world' AUTHORIZATION:'Token '```
### REPL support
A django repl can be summoned using;
```
# For python REPL
$ python manage.py shell# For database shell
$ python manage.py dbshell
```For eg interacting with models
```
from posts.models import Post
from django.contrib.auth.models import User#all_users
User.objects.all()#all_posts
Post.objects.all()# You can create update and delete posts and users from here as well
```