Django и добавление статического изображения

Добрый вечер,

Я только что закончил этот учебник:

https://docs.djangoproject.com/en/4.1/intro/tutorial01/

и мне нужно добавить новый каталог для отображения набора данных (не связанного с приложением polls). Я создал новый каталог, как я делал первые шаги в учебнике

Мои шаги:

...\> py manage.py startapp newendpoint

newendpoint/
    __init__.py
    admin.py
    apps.py
    migrations/
        __init__.py
    models.py
    tests.py
    urls.py
    views.py
path('newendpoint/', include('newendpoint.urls'))

**После установки я попробовал эти учебники: **

https://youtu.be/u1FR1nZ6Ng4 Я пробовал этот учебник и не имел успеха

https://adiramadhan17.medium.com/django-load-image-from-static-directory-27f002b1bdf1. Я также пробовал этот

Мой сервер падает или ничего не отображается. Мне бы очень пригодилась помощь, чтобы разобраться с этим, до того как я попробовал статическое изображение, я пытался добавить csv через SQLite3, но тоже безуспешно.

Шаг 1:

  • Установите подушку
$ pip install pillow

Шаг 2:

Добавьте модель для изображения в ваши приложения models.py


class  Imagemodel(models.Model):
    # .....
    pic = models.ImageField(upload_to='images/', null=True) # U can change to `FileField` for files

Шаг 3:

Делать миграции и мигрировать:

$ py manage.py makemigrations && migrate

Шаг 4:

откройте settings.py и добавьте следующий код. Этот код указывает Django, где хранить изображения.

import os # at the top
# Other settings ..
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR , 'media')

Шаг 5:

На уровне каталога вашего проекта создайте папку media:

$ mkdir media 

Шаг 6:

Откройте уровень проекта urls.py и добавьте код ниже, чтобы добавить нашу папку media в статические файлы.

# other imports
from . import settings
from django.contrib.staticfiles.urls import static
from django.contrib.staticfiles.urls import staticfiles_urlpatterns

# URL patterns

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

Шаг 7:

На уровне каталога вашего приложения (newendpoint), добавьте файл forms.py и добавьте код ниже:

from django import forms
from .models import *
 
 
class PicForm(forms.ModelForm):
 
    class Meta:
        model = Imagemodel
        fields = ['pic']

Шаг 8:

В вашем приложении (newendpoint) создайте папку templates и добавьте в нее файл pic.html. В pic.html добавьте код, приведенный ниже:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>image</title>
</head>
<body>
    <form method = "post" enctype="multipart/form-data">
        {% csrf_token %}
        {{ form.as_p }}
        <button type="submit">Upload</button>
    </form>
</body>
</html>

Шаг 9:

В вашем приложении views.py добавьте код ниже:

from django.http import HttpResponse
from django.shortcuts import render, redirect
from .forms import *
 
# Create your views here.
 
 
def pic_view(request):
 
    if request.method == 'POST':
        form = PicForm(request.POST, request.FILES)
 
        if form.is_valid():
            form.save()
            return redirect('success')
    else:
        form = PicForm()
    return render(request, 'pic.html', {'form': form})
 
 
def success(request):
    return HttpResponse('successfully uploaded')

Шаг 10:

В вашем приложении urls.py добавьте код ниже:

# .. other imports
from django.urls import path
from .views import *


urlpatterns = [
    path('image_upload', pic_view, name='image_upload'),
    path('success', success, name='success'),
]

Шаг 11:

Запустите сервер:

$ python3 manage.py runserver 

Загрузите изображение через: http://127.0.0.1:8000/image_upload

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