Невозможно просмотреть статические файлы на шаблоне

Этот проект работает, но не удается просмотреть загруженные файлы в шаблоне upload.html. Он хранит загруженные файлы в папке control _ static, все работает нормально, но когда я нажимаю на просмотр файла в шаблоне upload.html, он не отображает загруженный файл. Пожалуйста, помогите мне решить эту проблему. Пожалуйста

приложение USERMASTER:

views.py:

def control_upload(request):  
    if request.method == 'POST':
        form = ControlForm(request.POST, request.FILES)  
        if form.is_valid():
            handle_uploaded_file(request.FILES['control_uploadfile'])
            model_instance = form.save()
            model_instance.save()
    else:
        form = ControlForm()
    controlmachiness = Controlmachine.objects.all()
    return render(request,'usermaster/control_uploadfile.html',{'form':form,'controlmachiness':controlmachiness})
def handle_uploaded_file(f):  
    with open('usermaster/control_static/control_files/'+f.name, 'wb+') as destination:  
        for chunk in f.chunks():  
            destination.write(chunk)

def control_index(request):  
    controlmachines = Controlmachine.objects.all()  
    return render(request,"usermaster/control_show.html",{'controlmachines':controlmachines}) 

def control_destroy(request, id):  
    controlmachine = Controlmachine.objects.get(id=id)  
    controlmachine.delete()  
    return HttpResponseRedirect('/usermaster/controlfile/')

def upload(request):
    cmachines = Controlmachine.objects.all()
    return render(request,'usermaster/upload.html',{'cmachines':cmachines})

def save_machine(request):
   if request.method == "POST":
      machine_name = request.POST.get('machinename', '')
      operation_no = request.POST.get('operationname','')
      choiced_cmachine = Controlmachine.objects.filter(machine_name=machine_name, operation_no=operation_no)
      cmachines = Controlmachine.objects.all()
      return render(request,'usermaster/upload.html',{'cmachines':cmachines,'choiced_cmachine':choiced_cmachine})

models.py:

class Controlmachine(models.Model):  
    machine_name = models.CharField(max_length=100)  
    operation_no = models.IntegerField()  
    control_uploadfile = models.FileField(upload_to='control_files/')
  
    class Meta:  
        db_table = "controlmachine"

forms.py:

class ControlForm(forms.ModelForm):  
    class Meta:  
        model = Controlmachine 
        fields = ['machine_name', 'operation_no', 'control_uploadfile'] #https://docs.djangoproject.com/en/3.0/ref/forms/widgets/
        widgets = { 'machine_name': forms.TextInput(attrs={ 'class': 'form-control' }), 
            'operation_no': forms.TextInput(attrs={ 'class': 'form-control' }),
            'control_uploadfile': forms.ClearableFileInput(attrs={ 'class': 'form-control' }),
      }

Templates/usermaster/:

control_uploadfile.html:

{% extends "usermaster/home.html" %}
<html>
<head>
<title>Control File Upload</title>

</head>
{% block body %}
<body>
<p><h1>Control File Upload</h1></p>
<form method="post" enctype="multipart/form-data">  
        {% csrf_token %}  
        {{ form.as_p }}
        <button type="submit" class="save btn btn-default">Save</button> <br><br>
</form>
</body>
{% endblock %} 
</html>

upload.html:

{% extends 'dashboard/user_home.html' %}
{% block body %}
    {% load control_static %}
<body>
    <form action="{% url 'usermaster:save_machine' %}" method="post">
        {% csrf_token %}
        <label for="machinename">Select Machine Name:</label>
        <select class="form-control form-control-md" name="machinename" id="machinename">
            
            {% for machine in cmachines %}
            <option value="{{ machine.machine_name }}">{{ machine.machine_name }}</option>
            {% endfor %}
        </select>
        <br>
        <br>
        <label for="operationname">Select Operation Number:</label>
        <select class="form-control" id="operationname" name="operationname">
            
            {% for machine in cmachines %}
            <option value="{{ machine.operation_no }}">{{ machine.operation_no }}</option>
            {% endfor %}
            </select>
        <br>
        <br>
        <br>
        <input class="btn btn-info" type="submit" value="Save">
    </form>
    <br>
    <br>
    <table class="table table-bordered table-dark width=50%">
        <thead>
          <tr>
            <th scope="col">Machine Name</th>
            <th scope="col">Operation Number</th>
            <th scope="col">File</th>
          </tr>
        </thead>
        <tbody>
            <tr>
                {% for choice in choiced_cmachine %}
                <td>{{choice.machine_name}}</td>
                <td>{{choice.operation_no}}</td>
                <td>
                    {% for file in cmachines %}
                    <a class="btn btn-info" href="{% control_static 'usermaster/{{file.control_uploadfile}}' %}">view file</a>
                    {% endfor %}
                </td>
                {% endfor %}
            </tr>
        </tbody>
      </table>
    

{% endblock %}
</body>
</html>

urls.py:

app_name = 'usermaster'
urlpatterns = [
    path('controlfile/',views.control_index,name='control_index'),
    path('cdelete/<int:id>',views.control_destroy),
    path('controlupload/',views.control_upload,name='control_upload'),
    path('upload/',views.upload,name='upload'),
    path('save',views.save_machine,name='save_machine'),
]

urls.py:

urlpatterns = [
   
]+static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)

settings.py:

STATIC_URL = 'control_static/'
STATIC_ROOT=os.path.join(BASE_DIR,'control_static')

ROOT_PATH = os.path.dirname('control_static')
STATICFILES_DIRS = [os.path.join(ROOT_PATH,'usermaster')]

вызовите представление из файла upload.html

UPLOAD.HTML:

<a class="btn btn-info" href="{% url 'APPNAME:pdf_view' %}">view file</a>

views.py:

from django.http import FileResponse, Http404
from django.contrib.staticfiles.storage import staticfiles_storage

pdf_url = staticfiles_storage.url('YOUR_PDF_NAME.csv')

def pdf_view(request):
    try:
        return FileResponse(open('pdf_url', 'rb'), content_type='application/pdf')
    except FileNotFoundError:
        raise Http404()
Вернуться на верх