Tutorial
Passo a passo para criar as aplicações
mkdir folder cd folder
python3 -m venv env source env/bin/activate
pip3 install django==3.2.5 (LTS atual) pip install djangorestframework pip install markdown (auxilia na documentação da API) pip install django-filter (verificar a necessidade) django-admin startproject project_name cd project_name python3 manage.py startapp app_name python3 manage.py createsuperuser
pip freeze > requirements.txt
Em project_folder/project_folder/settings.py Colocar os pacotes add no INSTALLED_APPS 'django-filters', 'rest_framework', Colocar o nome das aplicações em INSTALLED_APPS Alterar a linguagem em LANGUAGE_CODE para pt-br Alterar TIME_ZONE para America/Sao_Paulo Adicionar: 'STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')' no final do arquivo Adicionar: 'MEDIA_URL = 'media/'' no final do arquivo Adicionar: 'MEDIA_ROOT = os.path.join(BASE_DIR, 'media')" no final do arquivo
terminal > pip3 install mysqlclient (talvez precisa instalar via apt: apt install default-libmysqld-dev)
Ex: do settings.py DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'testdb', 'USER': 'root', 'PASSWORD': '123456', 'HOST': '127.0.0.1', 'PORT': '3306', } }
se for mais de um banco: DATABASES = { 'default': {}, 'users': { 'NAME': 'user_data', 'ENGINE': 'django.db.backends.mysql', 'USER': 'mysql_user', 'PASSWORD': 'superS3cret' }, 'customers': { 'NAME': 'customer_data', 'ENGINE': 'django.db.backends.mysql', 'USER': 'mysql_cust', 'PASSWORD': 'veryPriv@ate' } } O DEFAULT em branco. Deve ser especificado o DB quando for executar o migrate ./manage.py migrate --database=customers
from django.db import models from django.contrib.auth.models import User
class Base(models.Model): created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) # ativo = models.BooleanField(default=True)
class Meta:
abstract = True
class Post(Base): title = models.CharField(max_length=100) url = models.URLField() poster = models.ForeignKey(User, on_delete=models.CASCADE)
class Meta:
ordering = ['-created_at']
class Vote(Base): voter = models.ForeignKey(User, on_delete=models.CASCADE) post = models.ForeignKey(Post, on_delete=models.CASCADE)
from rest_framework import serializers from .models import Post
class PostSerializer(serializers.ModelSerializer): class Meta: model = Post fields = ['id', 'title', 'url', 'poster', 'created_at']