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