Django -Используйте два представления на основе классов в одном шаблоне. - PullRequest
0 голосов
/ 25 января 2020

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

#models.py
class Page(Group):
    name = models.IntegerField()

class Photo(models.Model):
    file = models.FileField()

В views.py у меня есть два вида, например:

class UploadView(View):

    model = Photo 

    def get(self, request,*args, **kwargs):
        photos_list = Photo.objects.all()
        return render(self.request, 'page/upload.html', {'photos': photos_list})

    def post(self, request, *args, **kwargs):
        form = PhotoForm(self.request.POST, self.request.FILES)
        if form.is_valid():
            photo = form.save()
            data = {'is_valid': True, 'name': photo.file.name, 'url': photo.file.url}
        else:
           data = {'is_valid': False}
        return JsonResponse(data)


class PageDetailView(DetailView):
    model = Page
    template_name = 'page/page_detail.html'

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

class PhotoForm(forms.ModelForm):

    class Meta:
        model = Photo
        fields = ('file', )

Теперь в шаблоне моего pagedetailview я показываю такие вещи:

{{ page.name }}
<!-- and various things -->

И в своей загрузке. html, я есть кнопка для загрузки. Когда я нажимаю эту кнопку, я перехожу в проводник, чтобы выбрать фотографии, которые я хочу загрузить. Примерно так:

#upload photo's template
<div >
  <button type="button" class="btn btn-primary js-upload-photos">
    <span class="glyphicon glyphicon-cloud-upload"></span> Upload photos
  </button>
  <input id="fileupload" type="file" name="file" 
       data-url="{% url 'upload' %}"
       data-form-data='{"csrfmiddlewaretoken": "{{ csrf_token }}"}'>
</div>

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

Я хочу загрузить эти фотографии на странице «Детальный просмотр страницы». Так что тут как бы два взгляда. Что я могу сделать, чтобы получить доступ к этим двум представлениям в одном шаблоне?

Любая помощь будет высоко ценится. Большое спасибо.

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