Social Icons

Tuesday, January 11, 2022

Django Upload File

1 - Creating a new new app django studentsApp

It often happens that you want to add a file field to a registration or data insertion form ... So far we have not yet dealt with this type of field. the file field type can be treated either in isolation or within a model. To keep things simple, we will deal with this last type. Let's start by creating a mysite project in which we create an application named studentsApp



Next, let's create a directory named media within our mysite project. This folder must be configured within the settings.py file: settings.py

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
Next, let's configure the url.py files of the studentsApp application: urls.py So that the media files or images... are accessible, we must add to the
mysite/urls.py
file the following command:
+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 
Thus our
mysite/urls.py
file becomes:
#mysite/urls.py
from django.contrib import admin
from django.urls import path
from uploadFile import  views
from django.conf.urls.static import static
from . import settings

urlpatterns = [
    path('admin/', admin.site.urls),
    path('add_student/', views.student),
]+static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Now we need to register our application at the
settings.py
file
INSTALLED_APPS = [
    'studentsApp.apps.StudentsappConfig',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

2 - Creating a model for studentsApp

Consider the Students model example that we have already covered in the django models tutorial, to which we add a file field that allows students to attach their photos during registration:
# studentsApp/models.py
from django.db import models
class Students(models.Model):
    name        = models.CharField(max_length=25)
    email       = models.EmailField(max_length=40)
    phone    = models.IntegerField(max_length=40)
    section      = models.CharField(max_length=25)
    photo           = models.FileField(upload_to = 'photos')
The
upload_to = 'photos'
argument that we added tells django that the uploaded files should be saved in a folder named
'media/photos'

. Do you have to manually create this directory? Well don't worry! Django will create it automatically when running the script. 



The necessary migrations are then carried out:

python manage.py makemigrations studentsApp
and then :
python manage.py migrate

3 - Creating an insert data form

We then create a forms.py file which will generate the form: forms.py
# studentsApp/forms.py
from django.forms import ModelForm
from studentsApp.models import Students

class StudentsForm(ModelForm):
    class Meta:
        model = Students
        fields = ['name' , 'email' ,'phone' ,'section' , 'photo']
The views: will then be created in the same way as in the previous tutorial concerning django models with the difference of adding a request.FILES parameter:

4 - Creating views for studentsApp

views.py
# studentsApp/views.py
from django.http import HttpResponseRedirect
from django.shortcuts import render
from .forms import StudentsForm

def student(request):
    if request.method == 'POST':
        form = StudentsForm(request.POST, request.FILES)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('/student/')
    else:
        form = StudentsForm()
    return render(request, 'add_student.html', {'form': form})

5 - Building template for studentsApp

Finally, we just have to create the
index.html
template file without forgetting the parameter enctype="multipart/form-data" in the
template/add_student.html
file:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h2>Manage Students</h2>

<!-- Creating insert data form -->
<form enctype="multipart/form-data"  method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit" class="save btn btn−default">Save</button>
</form>

<!-- Displaying data from the views -->
<h2>Students List</h2>
<table style="width:700px; border-style: solid; border-collapse: collapse;">
    <thead>
    <th>Name</th> <th>Email</th> <th>Phone</th> <th>Section</th> <th>Photo</th>
    </thead>

    <tbody>
{% for stud in dataObject %}
    <tr>
     <td>{{ stud.name }}</td><td>{{ stud.email }}</td>
    <td>{{ stud.phone }}</td> <td>{{ stud.section }}</td>
        <td><img src="media/{{ stud.photo }}" width="75" height="75" /></td>
    </tr>
    {% endfor %}
    </tbody>
</table>
</body>
</html>

Now if we start the server and type in the browser the url address: http://127.0.0.1:8000/add_student we get a student registration form with a file upload field: 


 


Younes Derfoufi
my-courses.net

No comments:

Post a Comment

Learn Python For Beginners

Category Of Mobile Courses

Actualités (644) Adsense (1) Affiliation (1) Algebraic Topology (2) Algorithmic (1) all-news (30) Android (5) Android App (8) Android app without code (4) Android Apps (256) Android Development (4) Android download (2) Android OS (3) AngularJS (1) Automata theory and formal language (5) Bootstrap CSS (1) C programming (5) Category and Functor (8) CMS (3) Computer Glossary (18) Create Mobile App With Ionic Framework (2) CSS (2) CSS-Cascading-Style-Sheets (4) Developpement Java (13) Differential Geometry (1) Django-Python-Framework (15) dropshiping (26) Earn Money by Internet (4) Emplois (23) Framework php (2) Fraud (2) Github (2) HTML (7) IT News (3) Java For Beginners (10) Javascript (12) Kotlin Programming Language (8) Kotlin For Mobile Android (1) Linux Download (2) Marketing (5) Mobile (3) Mobile Courses (4) Mobile Marketing (4) MoneyGram (1) News (721) Node.js (5) Open Source (1) Photoshop (1) Protect Computer (1) Python (36) Python BeautifulSoup (1) Python For Data Science (2) Python PyQt (13) Python Reference (1) Python Source Code (3) Python-Books (6) Python-DVD-Training (1) Python-Exercises (297) Python-Framework (1) Python-IDE (1) Python-Kivy-Framework (2) Python-Modules (1) Python-pdf (2) Python-pyQt (1) python-temp (3) Référencement (2) Script PHP (2) Security (6) SEO (1) Snipping Tool: Faq (1) Social Networks (1) Source Code (4) Statistics With SPSS (2) Surveillance Software (1) Travail à domicile (6) Tutoriels php en vidéos (2) Tutoriels-MySql (6) tutoriels-php (19) Utilitaires (1) VPS (1) Web Hosting (1) Webcam (1) Webmarketing (11) Western Union (1) Windows 10 (1) Windows 7 (4) Windows 7 Faq (2) Windows 8 (1) Windows Accessories (1) Windows Download (8) Windows Drivers (1) Windows Fonts (1) Windows Power Shell (2) Windows Registry (2) Windows Security (18) Windows Software (2) Windows Spyware (2) Windows utilities (3) Windows Virus (2) Windows Vista (3) Windows Wireless (1) Windows xp (1) Wordpress (1)
 

Sample text

Sample Text

 
Blogger Templates