Eu escolhi python e não me arrependo, mas tive que começar com frameworks em Java tipo Next.JS para trabalhar com API RESTs, o python é muito bom como banco de dados também, no caso o pessoal usa bastante django, django é um framework baseado em python que sinceridade?
Não há igual, é descomunal aquilo, é o melhor gerenciador de banco de dados / framework que eu já conheci, o LOC é bem menor do que java, enquanto em java você usa 30mil no python você usa 4 mil 3 mil linhas (Fiz isso por que o mercado pede muito, por que tem muita gente, mas HTMX faz o mesmo serviço e até melhor que React, manutenção facil e rápido).
from django.contrib.auth.models import AbstractUser
from django.utils.text import slugify
from django.db import models
from apps.core.utils.manager import image_path
class Account(AbstractUser):
email = models.CharField(max_length=255, unique=True, blank=False, null=False)
avatar = models.ImageField(upload_to=image_path, default="default.png")
first_name = models.CharField(max_length=255, verbose_name="Nome")
last_name = models.CharField(max_length=255, verbose_name="Sobrenome")
birth = models.DateField(verbose_name="Nascimento", blank=True, null=True)
phone = models.CharField(max_length=255, verbose_name="Celular", blank=True, null=True)
address_name = models.CharField(max_length=255, verbose_name="Endereço", blank=True, null=True)
address_number = models.CharField(max_length=255, verbose_name="Número", blank=True, null=True)
city = models.CharField(max_length=255, verbose_name="Cidade", blank=True, null=True)
state = models.CharField(max_length=255, verbose_name="Estado", blank=True, null=True)
country = models.CharField(max_length=255, verbose_name="País", blank=True, null=True)
slug = models.SlugField(max_length=255, blank=True, null=True)
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['username', 'first_name', 'last_name']
def save(self, *args, **kwargs):
if not self.slug:
self.slug = slugify(self.username)
return super().save(*args, **kwargs)
def __str__(self):
return self.email
Um exemplo de uma view de usuários feita em django, simples e rápido, quando você faz a migração para o banco de dados, interessante usar Postgres. Você consegue gerenciar isso apenas entrando na aba /admin com seu superusuário.
Utilizando o chatgpt para fazer a tradução, em JavaSpring ficaria assim, e o gerenciamento dos dados você faria a parte.
import javax.persistence.*;
import org.springframework.util.StringUtils;
@Entity
@Table(name = "account")
public class Account {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false, unique = true)
private String email;
@Column(nullable = false)
private String password;
@Column(nullable = false, length = 255)
private String avatar;
@Column(name = "first_name", nullable = false, length = 255)
private String firstName;
@Column(name = "last_name", nullable = false, length = 255)
private String lastName;
@Column
private LocalDate birth;
@Column(length = 255)
private String phone;
@Column(name = "address_name", length = 255)
private String addressName;
@Column(name = "address_number", length = 255)
private String addressNumber;
@Column(length = 255)
private String city;
@Column(length = 255)
private String state;
@Column(length = 255)
private String country;
@Column(length = 255)
private String slug;
// Constructors, getters, and setters
// You may also need to define relationships with other entities if required.
public void save() {
if (StringUtils.isEmpty(slug)) {
slug = StringUtils.slugify(username);
}
// Save the account object to the database using Spring Data JPA or any other ORM.
}
// You can define additional methods or annotations as per your requirements.
@Override
public String toString() {
return email;
}
}