Загрузка файлов Django не работает; Получение 404 ошибки при попытке их извлечения. Страница не найдена (404) не существует

Я сделал пользовательскую модель пользователя, которую пользователи могут получить, чтобы загрузить свои фотографии профиля и документы. Я сделал представление для обновления этих данных и вставки их в базу данных.

Однако, когда я пытаюсь получить файл, я получаю сообщение 404. Они никогда не были загружены, хотя поле файла было заполнено именем и путем.

Забавно то, что когда я использую сайт администратора, т.е. 127.0.0.1:800/admin, все работает правильно. Что я делаю не так? Я схожу с ума.

Вся база кода находится на моем GitHub

Полное сообщение об ошибке:

Page not found (404) “C:\Users\Bosire Allan\PycharmProjects\eric\media\6244238d0f84e.png” does not exist Request Method: GET Request URL: http://127.0.0.1:8000/media/6244238d0f84e.png Raised by: django.views.static.serve

Я правильно настроил параметры MEDIA_ROOT и urls.py, я думаю.

from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    path('admin/', admin.site.urls, name='admin'),
    path('', include('application.urls')),
    path('', include('django.contrib.auth.urls')),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

Мой settings.py

STATIC_URL = 'static/'

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'

STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]

Мой models.py

class User_data(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE, blank=False)
    dob = models.DateField(blank=True, null=True)
    city = models.CharField(max_length=20, blank=True, null=True)
    highQ = models.CharField(max_length=20,
                             choices=EDUCATION,
                             default='Degree', blank=True, null=True)
    institution = models.CharField(max_length=20, blank=True, null=True)
    gender = models.CharField(max_length=20,
                              choices=GENDER,
                              default='Nairobi', blank=True, null=True)
    dog = models.DateField(blank=True, null=True)
    profile_pic = models.FileField(blank=True, null=True, upload_to='pics/')
    cv = models.FileField(blank=True, null=True, upload_to='docs/')

    class Meta:
        verbose_name_plural = "User Data"

    def __str__(self):
        return self.user.username

    @property
    def user_gender(self):
        return self.gender

Мой views.py

@login_required(login_url='application:login')
def profile(request):
    user_data_date_birth = datetime.datetime.now().strftime("%Y-%m-%d")
    user_data_date_grad = datetime.datetime.now().strftime("%Y-%m-%d")
    try:
        user_data = User_data.objects.get(user=request.user)
    except Exception as e:
        print(e)
        user_data = None
    if user_data is not None:
        if user_data.dog is not None:
            user_data_date_grad = user_data.dog.strftime("%Y-%m-%d")
        if user_data.dob is not None:
            user_data_date_birth = user_data.dob.strftime("%Y-%m-%d")
        context = {
            'user_data': user_data,
            'user_data_dog': str(user_data_date_grad),
            'user_data_dob': str(user_data_date_birth),
        }
        return render(request, 'profile.html', context)
    return render(request, 'profile.html')

Я предполагаю, что это была ошибка в django, или недосмотр при миграции базы данных. Я заново создал новый проект с новыми миграциями, и все работает как ожидалось.

Вернуться на верх