Home
Button Mobile Webdesign em Foco
Newsletter Webdesign em Foco
Support Webdesign em Foco
Contribuition Webdesign em Foco
Doe para a Webdesign em Foco
Suporte da Webdesign em Foco
Fechar

Qual Framework eu escolho? - #6 Quesito Models

06/04/2020

No tutorial de hoje avaliaremos o Django vs ExpressJS vs Laravel no quesito Models, visando verificar qual oferece melhor experiência no manejo do banco de dados.

Para rodar o MySQL precisamos de um servidor de MySQL. No caso, como já instalamos o WampServer podemos usar o http://localhost/phpmyadmin

Django

No PHPMyAdmin vamos criar o banco de dados de nome django.

Em project/settings.py vamos setar os dados do banco de dados:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'django',
        'PORT': '3306',
        'HOST': 'localhost',
        'USER': 'root',
        'PASSWORD': '',
    }
}

Precisaremos instalar o módulo pymysql rodando no terminal:

pip install pymysql

No arquivo settings.py vamos importar este módulo:

import pymysql
pymysql.install_as_MySQLdb()

Considerando a exception que dá no Django, precisaremos ir até o arquivo venv/Lib/site-packages/django/db/backends/mysql/basy.py

Localize a linha Database.version_info e substitua o código padrão pelo código abaixo:

version = Database.version_info
if version < (1, 3, 13):
    pass
    '''raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you have %s.' % Database.__version__)'''

Vamos configurar agora o arquivo models.py

class Person(models.Model):
    name = models.CharField(max_length=130)
    age = models.IntegerField()

Vamos rodar o comando no terminal:

python manage.py makemigrations
python manage.py migrate

Na views.py vamos chamar os dados do banco:

from app.models import Person

def contato(request):
    data = {}
    #data['person'] = Person.objects.get(name='thais')
    data['person'] = Person.objects.all()
    return render(request, 'contato.html', data)

E a página contato.html ficará assim:

{% block content %}
   {% for persons in person %}
      {{persons.name}}<br>
   {% endfor %}
{% endblock %}

ExpressJS

Criaremos o banco de dados express no PHPMyAdmin.

Precisamos antes de tudo instalar o módulo de manipulação do mysql:

npm install mysql

Nosso app.js ficará assim:

const express = require('express');
const app = express();
const handlebars = require('express-handlebars');
const bodyParser = require('body-parser');
const mysql = require('mysql');
const urlencodedParser = bodyParser.urlencoded({ extended: false });

app.engine('handlebars',handlebars({defaultLayout:'main'}));
app.set('view engine', 'handlebars');
app.use('/static',express.static('static'));

let pool  = mysql.createPool({
    connectionLimit : 10,
    host            : 'localhost',
    user            : 'root',
    password        : '',
    database        : 'express'
});


app.get('/contato',function(req,res){
    pool.getConnection(function(err, connection) {
        connection.query('select * from app_person where id=?',2, function (error, results, fields) {
            res.render('contato', {data:results});
        });
    });
});

A página contato.handlebars ficará assim:

{{#data}}
    {{name}}<br>
    {{age}}<br>
{{/data}}

Laravel

Criaremos o banco de dados laravel.

No arquivo .env você tem que configurar os dados de acesso ao seu banco.

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=

Vamos criar o nosso model através do comando:

php artisan make:model Persons -m

Acessaremos agora database/migrations e editaremos a migration persons:

    public function up()
{
    Schema::create('persons', function (Blueprint $table) {
        $table->id();
        $table->string('name');
        $table->integer('age');
    });
}

No terminal executaremos:

php artisan migrate

O nosso ContatoController ficará assim:

public function index()
{
    $model=new Persons();
    #$person=$model->all();
    $person=$model->find(1);
    return view('contato', compact('person'));
}

E a view resources/views/contato.blade.php assim:

@extends('main')

@section('content')
    {{--@foreach($person as $persons)
        {{$persons->name}}
{{$persons->age}}
@endforeach--}} {{$person->name}} @endsection

Ao fim, a avaliação ficou assim:

Quesito models - frameworks

Sucesso nos códigos e na vida!

Precisa de um professor? webdesignemfoco@gmail.com

Receba as aulas da Webdesign em Foco em Seu Email
Suporte Webdesign em Foco

Posts Relacionados

Qual Framework eu escolho? - #5 Quesito Padrão de Arquitetura de Software
Nessa vídeoaula vamos verificar os padrões de arquitetura de software do Django, do ExpressJS e do Laravel.
Saiba mais!
Qual Framework eu escolho? - #7 Quesito Servidores e Deploy
Na aula de hoje iremos fazer o comparativo de servidores e deploy entre o Django, Laravel e Express.
Saiba mais!
Framework
Nessa playlist aprenderemos um pouco mais sobre os diferentes frameworks existentes, apontando os defeitos e qualidades de cada um.
Saiba mais!