@Falarid

Как написать видеохостинг на Django?

Суть в том,что задали на курсовую работу написать видеохостинг. И сразу же я столкнулся с проблемой.Не могу передавать видео файлы в БД через поле FileField.Работаю с Python меньше месяца,как и с Django.Читал документацию,вроде все должно передаваться,но при этом ошибка говорит,что я ничего не передаю.

#models.py
from django.db import models


class Downloader(models.Model):
    name = models.CharField("Название", max_length=100)
    Dis = models.TextField("Описание", max_length=1000)
    file = models.FileField("Видео", upload_to='media/')

#forms.py
from django import forms
from.models import Downloader


class DownloadForm(forms.ModelForm):

    class Meta:
        model = Downloader
        fields = ['name', 'Dis', 'file']

#views.py
from django.http import HttpResponseRedirect
from django.shortcuts import render
from .forms import DownloadForm
from django.views.decorators.csrf import csrf_exempt


@csrf_exempt
def d(request):
    if request.method == 'POST':
        form = DownloadForm(request.POST)
        if form.is_valid():
            return HttpResponseRedirect('/main/')
    else:
        form = DownloadForm()
        return render(request, 'downloader.html', {'form': form})

Код ошибки:
ValueError at /Download/
The view Download.views.d didn't return an HttpResponse object. It returned None instead.
Request Method:	GET
Request URL:	http://127.0.0.1:8000/Download/
Django Version:	1.11.7
Exception Type:	ValueError
Exception Value:	
The view Download.views.d didn't return an HttpResponse object. It returned None instead.
Exception Location:	C:\Users\Solaire\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\core\handlers\base.py in _get_response, line 198
Python Executable:	C:\Users\Solaire\AppData\Local\Programs\Python\Python36-32\python.exe
  • Вопрос задан
  • 1607 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Django
Седой и строгий
В тег form добавить атрибут enctype
<div class="download">
    <form action="/Download/" method="post" enctype="multipart/form-data">
    {% csrf_token %}
    {{ form.as_p}}
        <div class="button_2">
        <button type="submit">Добавить</button>
        </div>
    </form>
</div>

Во вьюху добавить ветку условия для невалидной формы и ещё один параметр в вызов конструтора формы:
def d(request):
    if request.method == 'POST':
        form = DownloadForm(request.POST, request.FILES)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('/main/')
        else:
            return render(request, 'downloader.html', {'form': form})
    else:
        form = DownloadForm()
        return render(request, 'downloader.html', {'form': form})
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
tema_sun
@tema_sun
<form enctype="multipart/form-data">....
Ответ написан
Комментировать
@Falarid Автор вопроса
Решено.Забыл form.save( ) после проверки на валидность.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы