# coding=utf8
from django.shortcuts import render, redirect
from .models import Entry
from .forms import EntryForm
def home(request):
entries = Entry.objects.all()
return render(request, 'rime/home.html', {'entries': entries})
def upload(request):
if request.method == 'POST':
form = EntryForm(request.POST, request.FILES)
if form.is_valid():
form.save()
return redirect('/')
else:
form = EntryForm()
return render(request, 'rime/upload.html', {'form': form})
project/core/models.py
# coding=utf8
from django.db import models
from imagekit.models import ImageSpecField
from imagekit.processors import ResizeToFill
class Entry(models.Model):
title = models.CharField(max_length=255)
img = models.ImageField(upload_to='entry/%Y/%m/%d')
img_thumbnail = ImageSpecField(source='img',
processors=[ResizeToFill(100, 50)],
format='JPEG',
options={'quality': 60})
class Meta:
ordering = ('title', )
def __unicode__(self):
return self.title
project/core/forms.py
# coding=utf8
from django import forms
from .models import Entry
class EntryForm(forms.ModelForm):
class Meta:
model = Entry
project/core/templates/core/home.html
{% for entry in entries %}
<div><img src="{{ entry.img_thumbnail.url }}"><br></div>
{% endfor %}
project/core/templates/core/upload.html
<form action="/upload" method="post" enctype="multipart/form-data">{% csrf_token %}
{% for field in form %}
<div >
{{ field.errors }}
{{ field.label_tag }}: {{ field }}
</div>
{% endfor %}
<p><input type="submit" value="アップロード" /></p>
</form>
project/core/settings.py
INSTALLED_APPS = (
...
'djcelery',
'imagekit',
'storages',
'core',
)
DEFAULT_FILE_STORAGE = 'core.s3.MediaRootS3BotoStorage'
STATICFILES_STORAGE = 'core.s3.StaticRootS3BotoStorage'
AWS_S3_SECURE_URLS = True
AWS_QUERYSTRING_AUTH = False
AWS_ACCESS_KEY_ID = ''
AWS_SECRET_ACCESS_KEY = ''
AWS_STORAGE_BUCKET_NAME = ''
IMAGEKIT_DEFAULT_FILE_STORAGE = DEFAULT_FILE_STORAGE
IMAGEKIT_DEFAULT_CACHEFILE_BACKEND = 'imagekit.cachefiles.backends.Async'
import djcelery
djcelery.setup_loader()
BROKER_URL = 'redis://localhost:6379/0'
project/core/s3.py
from storages.backends.s3boto import S3BotoStorage
StaticRootS3BotoStorage = lambda: S3BotoStorage(location='static')
MediaRootS3BotoStorage = lambda: S3BotoStorage(location='media')