Могу ли я связать файл, загруженный в модель, с идентификатором сеанса для анонимных пользователей в Django? - PullRequest
0 голосов
/ 16 июня 2020

В моем веб-приложении посетители должны щелкнуть кнопку, которая генерирует уникальный видеофайл, сохраняет его в модели и отображает им.

Мне трудно понять, как связать видеофайл с посетитель, не заставляя его входить в систему, что я не хочу делать.

1 Ответ

1 голос
/ 17 июня 2020

Вы можете создать эту функцию с помощью:

  • формы, которая выполняет запрос POST при отправке
  • представления django, которое генерирует видеофайл, запускаемый запросом POST,
  • это представление сохраняет hashed_video_file_name в сеансе после создания видео
  • если пользователь повторно посещает страницу, проверьте, существует ли видеофайл для этого hashed_video_file_name в сеансе

например:

index. html

<body>

    <form method="POST" action="{% url 'video-file' %}">
        <input type="submit"/>
    </form>

    {% if video %}
       <video>
       // render video here
       </video>
    {% endif %}

</body>

urls.py

from views import VideoFileView

urlpatterns = [
    path('video-file/', VideoFileView.as_view(), name='video-file')
]

views.py

from models import VideoUpload
from video_generator import generate_video_file

class VideoFileView(View):
    def get(self, request):
        context = {}

        try:
            hashed_video_file_name = request.session['video_file']
            video_upload = VideoUpload.objects.get(hashed_video_file_name=hashed_video_file_name)
            context = {
                'video': video_upload.videofile
            }
        except KeyError, VideoUpload.DoesNotExist:
            pass

    #   this html also contains form
        return render(request, 'index.html', context=context)

    def post(self, request):
        # here your magic to generate video_file
        video_file = generate_video_file()

        video_upload = VideoUpload.objects.create(videofile=video_file, name='name')
        request.session['video_file'] = video_upload.hashed_video_file_name
        return render(request, 'index.html', {'video': video_upload.videofile})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...