0
ユーザーはmodels.pyを使用してzipファイルをアップロードできますが、ファイルを解凍してイメージを反復してテンプレートに表示することはできません。Djangoのモデルを使ってユーザーがアップロードしたファイルを解凍します
Models.py
from django.db import models
from django.core.urlresolvers import reverse
from django.contrib.auth.models import User
from django.conf import settings
from .validators import validate_file_extension
class Post(models.Model):
title = models.CharField(max_length=140)
body = models.TextField(max_length=250)
date = models.DateTimeField(auto_now=True, auto_now_add=False)
album_image = models.FileField(validators=[validate_file_extension])
user = models.ForeignKey(User, default=1)
def get_absolute_url(self):
return reverse('photos:detail',kwargs={'pk':self.pk})
def __str__(self):
return self.title
views.py
ポスト作成し、インデックスビュー作品/または私はzipファイルをアップロードし、
を反復処理しようとしているに単一の画像をアップロードしてから変更されるまで、少なくとも働いていました{% extends "homepage/header.html" %}
{% block content %}
{% for image in image%}
<img src ="{{image.url}}" style="width:304px;height:228px;">
{% endif%}
<h1>{{post.title}}</h1>
<h3>{{post.user}}</h3>
<h3>{{post.body}}</h3>
<h3>{{post.date}}</h3>
{% endblock %}
detail.html
class IndexView(generic.ListView):
template_name='photos/post.html'
def get_queryset(self):
return Post.objects.filter(user=self.request.user)
def DetailView(request,pk=""):
model = Post
z = zipfile.ZipFile() ### I am unsure of what goes here!!
context = {
"images": z,
}
template_name = 'photos/detail.html'
return render(request,template_name,context)
class PostCreate(generic.CreateView):
form = PostForm()
model = Post
fields = ['title','body','album_image']
if form.is_valid():
instance = form.save(commit=False)
username = form.cleaned_data['username']
album_image = form.cleaned_data['album_image']
instance.save()
context = {
"form": form,
}
私はジップ内容に注意してください、おそらくここで、ループ内のファイル名/種類を確認するが、以下のかもしれないようなものだろう
post_form.html
<html>
<body>
{% if request.user.is_authenticated%}
<h3>Hello {{request.user.username}}, please upload your folder as a .zip file</h3>
{% endif %}
<div class="container-fluid">
<div class="row">
<div class="col-sm-12 col-md-7">
<div class="panel panel-default">
<div class="panel-body">
{% if request.user.is_authenticated %}
<form class="form-horizontal" role="form" action="" method="post" enctype="multipart/form-data">
{% csrf_token %}
{{form.as_p}}
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-success">Submit</button>
</div>
</div>
</form>
{% else %}
<p>You must be logged in to upload a file</p>
{% endif %}
</div>
</div>
</div>
</body>
</html>
post.html
{% extends "homepage/header.html" %}
{% block content %}
{%if object_list %}
<ul>
{% for album in object_list %}
<h3><a href = "{% url 'photos:detail' album.id %}">{{album.title}} - {{album.date}}</a></h3><br>
{% endfor %}
</ul>
{% else %}
<h3>You have no photo albums!</h3>
{% endif %}
{% endblock %}
申し訳ありませんが、私はどのようにZIPファイルへのパスになるだろうと、Djangoに非常に新しいですか?それは単にsettings.py w.r.t MEDIA_URLで作られた道でしょうか?ご協力ありがとうございました! –
はい、おそらく。どのように初期アップロードを処理していますか?あなたはどのように単一の画像を表示していましたかそれは私が疑うのと同じ道であろう。 – AMG
上記と同じIndexViewクラス。そして、上記のDef DetailViewはもともとclass DetailView(generic.DetailView)であり、モデルとテンプレート名のみを含んでいて、detail.htmlはforループなしで同じで、の代わりに –