Как хранить изображения с помощью форм Django?

Я новичок в django. Я застрял на некоторое время. Я считаю, что все настроено правильно. Однако, когда создаются мои объекты, он не создает медиа директорию или не сохраняет файлы/изображения. Я сделал файл настроек, урлы, представления, модели, формы - все.

Вот соответствующие файлы:


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

// models.py
class Trip(models.Model):
    city = models.CharField(max_length= 255)
    country = models.CharField(max_length= 255)
    description = models.CharField(max_length= 255)
    creator = models.ForeignKey(User, related_name = 'trips_uploaded',on_delete= CASCADE, null=True)
    favoriter = models.ManyToManyField(User, related_name= 'fav_trips')
    photo = models.ImageField(null=True, blank =True, upload_to='trips/')

// urls.py ( there were 2 ways to write media according to tutorial)
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),
    path('', include('travelsiteapp.urls'))
]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 

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

// views.py (lastly)
def tripAdd(request):
    form = TripForm()
    if request.method == 'POST':
        form = TripForm(request.POST, request.FILES)
        if form.is_valid():
            form.photo = form.cleaned_data["photo"]
            form.save()

    context = { 'form': form}
    return render(request, 'tripAdd.html', context)

// html/ form

    <form action="/createTrip"method="post" enctype="multipart/form-data">
        {% csrf_token %}
        {{form.as_p}}
        <input type="submit" value="submit">
    </form>

// forms.py 

from django import forms
from django.forms import ModelForm
from .models import Trip
from django import forms

class TripForm(ModelForm):
    class Meta:
        model = Trip
        fields = ['city', 'country', 'description', 'photo']


// I have hit all the steps not sure whats wrong? & and installed pip pillow

Какой url обслуживает представление tripAdd()? Если это /createTrip, как в вашей форме, то добавьте косую черту в действие следующим образом: /createTrip/. Когда вы отправляете сообщение по URL, Django по умолчанию ожидает косую черту. Вы можете настроить это поведение, если хотите. Также не забудьте объявить этот URL (поскольку его нет в приведенном вами примере).

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