Изображения Django на носителе не отображаются, несмотря на правильные настройки - PullRequest
1 голос
/ 20 октября 2019

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

Модель

class Upload(models.Model):
image = models.ImageField(upload_to='images/')

Просмотр

class HomePageView(CreateView):
    model = Upload
    form_class = UploadForm
    template_name = 'home.html'
    success_url = reverse_lazy('rank')

class RankView(ListView):
    model = Rank
    template_name = 'rank.html'

Настройки

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

URL

urlpatterns = [
    path('', include('avatars.urls')),
    path('admin/', admin.site.urls),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

Загрузить шаблон

 <form method="post" enctype="multipart/form-data">
  {% csrf_token %}
  {{ form.as_p }}
  <button type="submit">Upload Image</button>
</form>

Получение изображения с помощью

<img src="{{upload.image.url}}">

Форма

class UploadForm(forms.ModelForm):

class Meta:
    model = Upload
    fields = ['image']

При проверке кода в браузере, URL-адрес img 'unknown'

Редактировать:попытался изменить мой взгляд, без разницы

def upload_file(request):
if request.method == 'POST':
    form = UploadForm(request.POST, request.FILES)
    if form.is_valid():
        form.save()
        return HttpResponseRedirect('/rank')
else:
    form = UploadForm()
return render(request, 'home.html', {'form': form})

Ответы [ 2 ]

0 голосов
/ 22 октября 2019

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

class HomePageView(CreateView):
    form_class = UploadForm
    template_name = 'home.html'
    success_url = reverse_lazy('rank')

надеюсь, что это работает

0 голосов
/ 20 октября 2019

попробуйте использовать метод render insted из template_name, а форма не имеет атрибута действия

return render (запрос, self.template_name, {'form': form})

[https://docs.djangoproject.com/en/2.2/topics/class-based-views/intro/#handling-forms-with-class-based-views][1]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...