File Upload App
File Upload App
Create App
python manage.py startapp fileuploadapp
Link With Django Project
djangoproject/settings.py
INSTALLED_APPS = [
'fileuploadapp',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
****include urls.py |Djangoproject Folder ****
from django.contrib import admin
from django.urls import path,include
urlpatterns = [
path('admin/', admin.site.urls),
path('fileupload/',include('fileuploadapp.urls')),
]
Make Models
models.py
from django.db import models
class Document(models.Model):
name = models.CharField(max_length=255)
file = models.FileField(upload_to='documents/')
description = models.TextField(blank=True)
Make Migrations And Migrate
python manage.py makemigrations
python manage.py Migrate
forms.py
create a forms.py file in fileuploadapp app folder
from django import forms
from .models import Document
class DocumentForm(forms.ModelForm):
class Meta:
model = Document
fields = ['name', 'file', 'description']
views.py
from django.shortcuts import render, redirect
from .forms import DocumentForm
from .models import Document
def document_list(request):
documents = Document.objects.all()
return render(request, 'fileuploadapp/document_list.html', {'documents': documents})
def document_create(request):
if request.method == 'POST':
form = DocumentForm(request.POST, request.FILES)
if form.is_valid():
form.save()
return redirect('document_list')
else:
form = DocumentForm()
return render(request, 'fileuploadapp/document_upload.html', {'form': form})
def document_update(request, pk):
document = Document.objects.get(pk=pk)
if request.method == 'POST':
form = DocumentForm(request.POST, request.FILES, instance=document)
if form.is_valid():
form.save()
return redirect('document_list')
else:
form = DocumentForm(instance=document)
return render(request, 'fileuploadapp/document_update.html', {'form': form})
def document_delete(request, pk):
Document.objects.get(pk=pk).delete()
return redirect('document_list')
templates file
document_upload.html
<form method="post" enctype="multipart/form-data">
<div data-gb-custom-block data-tag="csrf_token"></div>
{{ form.as_p }}
<button type="submit">Create</button>
</form>
document_list.html
<h1>Document List</h1>
<a href="
<div data-gb-custom-block data-tag="url" data-0='document_create'></div>">Create Document</a>
<table>
<tr>
<th>Title</th>
<th>File</th>
<th>Description</th>
<th>Actions</th>
</tr>
<div data-gb-custom-block data-tag="for">
<tr>
<td>{{ document.name }}</td>
<td><a href="{{ document.file.url }}">{{ document.file.name }}</a></td>
<td>{{ document.description }}</td>
<td>
<a href="
<div data-gb-custom-block data-tag="url" data-0='document_update'></div>">Edit</a>
<a href="<div data-gb-custom-block data-tag="url" data-0='document_delete'></div>" onclick="return confirm('Are you sure?')">Delete</a>
</td>
</tr>
</div>
</table>
document_update.html
<h1>Update Document</h1>
<form method="post" enctype="multipart/form-data">
<div data-gb-custom-block data-tag="csrf_token"></div>
{{ form.as_p }}
<button type="submit">Update</button>
</form>
urls.py
from django.urls import path
from .views import document_list, document_create, document_update, document_delete
urlpatterns = [
path('', document_list, name='document_list'),
path('create/', document_create, name='document_create'),
path('update/<int:pk>/', document_update, name='document_update'),
path('delete/<int:pk>/', document_delete, name='document_delete'),
]
Last updated