Skip to content

Latest commit

 

History

History
154 lines (123 loc) · 3.54 KB

190409.md

File metadata and controls

154 lines (123 loc) · 3.54 KB

190409

# views.py

def update(request):
    return render(request, 'posts/create.html')

# urls.py
path('<int:post_id>/update/', views.update, name='update'), 추가

# views.py
def update(request,post_id):
    post = get_object_or_404(Post, id=post_id)
    if request.method == 'POST':
        post_form = PostForm(request.POST, instance=post)
        if post_form.is_valid():
            post_form.save()
            return redirect('posts:list')
    else:
        post_form = PostForm(instance=post)
    return render(request, 'posts/create.html', {'post_form':post_form})
이미지 업로드
pip install pillow
# models.py
from django.db import models

# Create your models here.
class Post(models.Model):
    image = models.ImageField(blank=True)
    
# bash
./manage.py makemigrations
./manage.py migrate
<!--create.html-->
<form action="" method="post" enctype="multipart/form-data">
# views.py
def create(request):
    if request.method == 'POST':
        post_form = PostForm(request.POST, request.FILES) # 추가
        if post_form.is_valid():
            post_form.save()
            return redirect('posts:list')
        
    else:
        post_form = PostForm()
    return render(request, 'posts/create.html', {'post_form':post_form})
# settings.py
MEDIA_URL='/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

# 전체 urls.py
from django.contrib import admin
from django.urls import path, include
from django.conf.urls.static import static # 추가
from django.conf import settings	# 추가

urlpatterns = [
    path('admin/', admin.site.urls),
    path('posts/', include('posts.urls')),
] 
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) # 추가
def create(request):
    if request.method == 'POST':
        post_form = PostForm(request.POST, request.FILES, instance=post) # 추가
        if post_form.is_valid():
            post_form.save()
            return redirect('posts:list')
# bash
pip install pilkit django-imagekit
# settings.py 
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'bootstrap4',
    'posts',
    'imagekit', #추가
]

# models.py
from django.db import models
from imagekit.models import ProcessedImageField # 추가
from imagekit.processors import ResizeToFill # 추가

# Create your models here.
class Post(models.Model):
    content = models.TextField()
    # image = models.ImageField(blank=True)
    image = ProcessedImageField( 					# 추가 
        upload='posts.image', # 저장 위치
        processors=[ResizeToFill(600,600)], # 처리할 작업 목록
        format='JPEG', # 저장 포맷
        options={'quality':90}, # 옵션
        ) 
    
 # bash
./manage.py makemigrations
./manage.py migrate

# models.py 
from django.db import models
from imagekit.models import ProcessedImageField
from imagekit.processors import ResizeToFill

def post_image_path(instance, filename):
    return 'posts/{}/{}.jpg'.format(instance.content, filename)
    
    
# Create your models here.
class Post(models.Model):
    content = models.TextField()
    # image = models.ImageField(blank=True)
    image = ProcessedImageField(
        upload_to=post_image_path, # 저장 위치
        processors=[ResizeToFill(600,600)], # 처리할 작업 목록
        format='JPEG', # 저장 포맷
        options={'quality':90}, # 옵션
        )