Project Log - acremonezi/Projeto-Integrador-em-Computacao-I GitHub Wiki

01 - Project Start up

  1. Create Virtual Environment

    1. python3 -m venv venv
  2. Activate Virtual Environment:

    1. source venv/bin/activate
  3. Install Django Library:

    1. pip install django pillow
      1. Collecting django
        Downloading Django-3.2.8-py3-none-any.whl (7.9 MB)
            |████████████████████████████████| 7.9 MB 6.6 MB/s 
        Collecting asgiref<4,>=3.3.2
        Using cached asgiref-3.4.1-py3-none-any.whl (25 kB)
        Collecting pytz
        Using cached pytz-2021.3-py2.py3-none-any.whl (503 kB)
        Collecting sqlparse>=0.2.2
        Using cached sqlparse-0.4.2-py3-none-any.whl (42 kB)
        Installing collected packages: asgiref, pytz, sqlparse, django
        Successfully installed asgiref-3.4.1 django-3.2.8 pytz-2021.3 sqlparse-0.4.2
        
  4. Create Django Base Project: Name = certification

    1. django-admin startproject certification .
  5. Edit ./certification/Settings.py

    1. LANGUAGE_CODE = 'pt-BR'
    2. TIME_ZONE = 'America/Sao_Paulo'
    3. import os
    4. Add on TEMPLATES = 'DIRS': [os.path.join(BASE_DIR, 'templates')],
    5. Create directory: ./templates
  6. Create Django App: Name = student

    1. python3 manage.py startapp student
    2. Django user a MVT structure:
      1. M: Model responsable for DB.
      2. V: View responsable for the project logic.
      3. T: Template responsable for what user's actually see.
  7. Create URL on ./certification/urls.py

    1. from django.contrib import admin
      from django.urls import path, include
      
      urlpatterns = [
          path('admin/', admin.site.urls),
          path('auth/', include('student.urls')),
      ]
      
  8. Create URL on ./student/urls.py

    1. from django.urls import path
      from . import views
      
      urlpatterns = [
          path('signup/', views.signup, name = 'signup'),
          path('signin/', views.signin, name = 'signin'),
      
          path('signup_validate/', views.signup_validate, name = 'signup_validate'),
          path('signin_validade/', views.signin_validate, name = 'signin_validate'),
      ]
      
  9. Create VIEW functions to URLs on ./student/views.py

    1. from django.shortcuts import render
      from django.http import HttpResponse
      
      # Create your views here.
      
      # SignUP
      def signup(request):
          # return HttpResponse('function signup') // test view and urls 
          status = request.GET.get('status')
          return render(request, 'signup.html', {'status': status})
      
      # SignIN
      def signin(request):
          # return HttpResponse('function signin') // test view and urls 
          status = request.GET.get('status')
          return render(request, 'signin.html', {'status': status})
      
  10. Create Templates:

    1. ./template/base.html
    2. ./student/template/signin.html
    3. ./student/template/signup.html
  11. Create Models on ./student/models.py:

    1. from django.db import models
      
      # Create your models here.
      
      class Student(models.Model):
          firstname = models.CharField(max_length = 100)
          lastname = models.CharField(max_length = 100)
          email = models.EmailField()
          password = models.CharField(max_length = 64)
      
          def __str__(self) -> str:
              return self.firstname
      
  12. Create DB:

    1. During development we will use SQLite3 and after finish it, we will migrate it to MySQL.
    2. python3 manage.py makemigrations
    3. python3 manage.py migrate
  13. Create SuperUser:

    1. python3 manage.py createsuperuser
  14. Register the student App on Django Admin Panel by editing ./student/admin.py:

    1. from django.contrib import admin
      from .models import Student
      
      # Register your models here.
      
      # Simple Method
      #admin.site.register(Student)
      
      # Advanced Method
      @admin.register(Student)
      
      class UserAdmin(admin.ModelAdmin):
          list_display = ('firstname', 'lastname', 'email', 'password')
          search_fields = ('firstname', 'lastname', 'email')
          readonly_fields = ('password',)
      
  15. Several other changes on:

    1. URL
    2. Views
    3. Templates.

02 - Project Start up

  1. Create SignIN/SignUP funcions:
    1. ./template/base.html
    2. ./student/template/signin.html
    3. ./student/template/signup.html