Bootstrap 5
https://getbootstrap.com/docs/5.0/getting-started/introduction/
https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css
Mysql tabase table
CREATE TABLE `student` (
`id` bigint(20) NOT NULL,
`firstname` varchar(50) NOT NULL,
`lastname` varchar(50) NOT NULL,
`email` varchar(254) NOT NULL,
`file` varchar(100) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Connect to MySQL Database
//devproject/settings.py INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'myapp', #add myapp ] DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'django', 'USER': 'root', 'PASSWORD': '', 'HOST': 'localhost', 'PORT': '3306' } }Model
myapp/models.py
//myapp/models.py from django.db import models # Create your models here. class StudentForm(models.Model): firstname = models.CharField("Enter first name", max_length=50) lastname = models.CharField("Enter last name", max_length = 50) email = models.EmailField("Enter Email") file = models.FileField() # for creating file input class Meta: db_table = "student"Make Migrations
Run the commands below to make migrations:
python manage.py makemigrations
python manage.py migrate
C:\my_project_django\testdev>python manage.py makemigrations
C:\my_project_django\testdev>python manage.py migrate
Creating View
myapp/views.py
//myapp/views.py from django.shortcuts import render from django.http import HttpResponse from myapp.functions import handle_uploaded_file #functions.py from myapp.forms import StudentForm #forms.py def index(request): if request.method == 'POST': student = StudentForm(request.POST, request.FILES) if student.is_valid(): handle_uploaded_file(request.FILES['file']) model_instance = student.save(commit=False) model_instance.save() return HttpResponse("File uploaded successfuly") else: student = StudentForm() return render(request,"index.html",{'form':student})myapp/forms.py
////myapp/forms.py from django import forms from myapp.models import StudentForm #models.py class StudentForm(forms.ModelForm): class Meta: model = StudentForm fields = "__all__" def __init__(self, *args, **kwargs): super(StudentForm, self).__init__(*args, **kwargs) for field_name, field in self.fields.items(): field.widget.attrs['class'] = 'form-control'myapp/functions.py
//myapp/functions.py def handle_uploaded_file(f): with open('myapp/static/upload/'+f.name, 'wb+') as destination: for chunk in f.chunks(): destination.write(chunk)myapp/urls.py
//myapp/urls.py from django.contrib import admin from django.urls import path from myapp import views urlpatterns = [ path('admin/', admin.site.urls), path('', views.index, name='index') ]myapp/templates/index.html
//myapp/templates/index.html <html> <head> <title>Django File Upload - cairocoders</title> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css"> </head> <body> <div class="container" style="padding:20px;"> <div class="row"> <div class="col-12"> <p><h1>Django File Upload Save to Mysql Database</h1></p> <form method="POST" class="post-form" enctype="multipart/form-data"> {% csrf_token %} {{ form.as_p }} <button type="submit" class="btn btn-primary">Save</button> </form> </div> </div> </div> </body> </html>Run : C:\django\devproject>python manage.py runserver