Django: Difference between revisions
Jump to navigation
Jump to search
Line 100: | Line 100: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=Create Model Classes= | =Create Model Classes= | ||
Edit the model classes under the Product app | |||
<syntaxhighlight lang="python"> | <syntaxhighlight lang="python"> | ||
from django.db import models | |||
# Create your models here. | |||
class Product(models.Model): | |||
title = models.CharField(max_length=200) | |||
image = models.CharField(max_length=200) | |||
likes = models.PositiveIntegerField(default=0) | |||
class User(models.Model): | |||
pass | |||
</syntaxhighlight> | |||
=Run the Migrations= | |||
This will create the tables. Log back into the container and type | |||
<syntaxhighlight lang="bash"> | |||
python manage.py makemigrations | |||
</syntaxhighlight> | </syntaxhighlight> |
Revision as of 11:48, 6 January 2021
Setting up REST API within Django
These are just notes from a demo
Create a Django Project
Follow steps on https://www.django-rest-framework.org/tutorial/quickstart/#project-setup
Create a Container
We can build a container using docker-compose. Create a docker file with
FROM python:3.9
ENV PYTHONNUMBUFFERED 1
WORKDIR /app
COPY requirements.txt /app/requirements.txt
RUN pip install -r requirements.txt
COPY . /app
CMD python manage.py runserver 0.0.0.0:8000
Next write a yaml to install software
version: '3.8'
services:
backend:
build:
context: .
dockerfile: Dockerfile
ports:
- 8000:8000
volumes:
- .:/app
depends_on:
- db
db:
image: mysql:5.7.32
restart: always
environment:
MYSQL_DATABASE: admin
MYSQL_USER: root
MYSQL_PASSWORD: root
MYSQL_ROOT_PASSWORD: root
volumes:
- .dbdata:/var/lib/nysql
ports:
- 33066:33036
Create a requirements.txt document
Django==3.1.5
djangorestframework==3.12.2
mysqlclient==2.0.3
django-mysql==3.10.0
django-cors-headers==3.6.0
pika==1.1.0
Login to Container
Login to the container with
docker-compose exec backend bash
Create an App
python manage.py startapp products
Amend the Settings on the container
We need to modify the following sections
INSTALLED_APPS = [
...
'django.contrib.staticfiles',
'rest-framework',
'corsheaders',
'products'
]
MIDDLEWARE = [
...
'django.contrib.sessions.middleware.SessionMiddleware',
'corsheaders.middleware.CorsMiddleware',
...
]
...
# Database
# https://docs.djangoproject.com/en/3.1/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'admin',
'USER': 'root',
'PASSWORD': 'root',
'HOST': 'db',
'PORT': '3306'
}
}
...
CORS_ALLOW_ALL_ORIGINS = True
Create Model Classes
Edit the model classes under the Product app
from django.db import models
# Create your models here.
class Product(models.Model):
title = models.CharField(max_length=200)
image = models.CharField(max_length=200)
likes = models.PositiveIntegerField(default=0)
class User(models.Model):
pass
Run the Migrations
This will create the tables. Log back into the container and type
python manage.py makemigrations