Skip to content

antlikelion/mini_team2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 

Repository files navigation

미니톤 2조(INDI-THEATER)

안보여요

팀원(Likelion 7기)

우지학:Back-End, Django

이인우:Front-End, HTML&CSS

최세은:Front-End, HTML&CSS

김준오:Back-End, Django

김재훈:Back-End, Django

서비스취지

‘영화계의 웹툰화’를 위한 플랫폼을 만들어, 사장되는 많은 저예산영화들과 대중의 접점을 넓히는 것이 INDI-THEATER의 서비스 취지입니다.

1.저예산영화란?

흔히 ‘독립영화’, ‘다양성영화’, ‘예술영화’등의 용어로 일컬어지는 저예산영화는 그 제작방식이나 내용의 측면에서 주류 상업영화와는 분명히 구별됩니다. 예산이 적기에 흥행에 대한 부담이 적어 고예산영화에 비해 다양한 콘텐츠를 생산할 수 있음은 물론 영화시장에서 탄력적이고 순발력있게 대응할 수 있다는 장점이 그러한 예입니다.

> 황동열, 저예산영화의 관람태도 형성요인이 관람동기 및 만족도에 미치는 영향, 중앙대학교 예술대학원, 2015, 7pg

2.저예산영화의 시장현황

안보여요

<표4> 에서 보다시피 매년 개봉되는 영화 편수는 급격히 늘어 2010년 대비하여 2014년에는 불과 5년 만에 약 2배나 많은 영화가 개봉하는 개봉 영화 홍수 사태를 맞이하고 있으며, 이에 비례하여 다양성 영화의 개봉 편수도 상당히 많은 수로 증가했습니다. 일반적으로 전체 영화 개봉 편수 중 다양성 영화가 차지하는 비율은 약 35~45% 수준으로 편수에서는 상당한 비중을 차지하지만, 전국 관객 수에서 다양성 영화 관객 수는 2013년에는 1.7%, 2014년에는 9.2%로 아주 작은 일부를 차지할 뿐입니다. 이를 서울 관객 수로 비교하면, 2013년에 3.3%, 2014년에 9.2%로 전국 관객수에 비해 훨씬 높은 비율이어서 예술영화전용관이나 독립영화전용관이 대부분 서울과 수도권에 몰려 있는 것과 높은 상관관계를 보여주고 있습니다.

> 송낙원, 독립영화 배급 지원 정책 연구, 한국영화학회, 2015, 100pg

타지역에 비해 전용관의 접근이 용이한 서울의 저예산영화 관객수가 압도적으로 높은 것에서 관객들의 수요가 분명히 존재함에도 공급망의 부족으로 그 수요가 충족되지 않음을 알 수 있습니다. 이에 INDI-THEATER팀은 이러한 수요와 공급의 불균형을 해소해줄 매개가 필요함을 인식했습니다.

저예산영화 수요와 공급의 불균형을 초래하는 가장 큰 원인은 영화시장의 독과점입니다. 현재 중소 규모의 제작ㆍ배급ㆍ상영 사업자들은 대기업 멀티플렉스를 통하지 않고는 시장 내 영업이 어렵습니다. 일정 규모 이상의 배급을 하기 위해서는 메이저 배급사와 공동 배급을 해야 하고, 독립적인 영화관에 올리기보다는 대형 멀티플렉스 체인의 위탁관에 올려야 하니 공정한 시장 경쟁을 운운할 수는 없는 노릇입니다. 즉, 독립영화의 자생적 재생산 구조를 갖추기 위해 거대 사업자의 유통망과는 독립된 별개의 유통 영역이 필요함을 알 수 있습니다.

> 다음 정부에 제안하는 독립영화 진흥 정책, 한국독립영화협회, 2012, 43pg

3.왜 ‘INDI-THEATER’여야 하는가?

먼저 영화라는 상품이 갖는 특징을 이해할 필요가 있습니다. 영화는 관람 전 그 품질을 평가하기 어렵고 경험재의 특성이 강하기 때문에 지각된 위험이 높다는 특성이 있습니다. 영화를 관람하기 위해 잠재 소비자는 영화를 선택하기에 앞서 반드시 정보를 탐색하는 경향이 있습니다. 그리고 이러한 소비자의 선택에 영향을 미치는 정보 요인들은 아주 중요합니다. 이는 영화의 흥행 성과와 아주 밀접한 관계를 맺기 때문입니다.

> 황동열, 저예산영화의 관람태도 형성요인이 관람동기 및 만족도에 미치는 영향, 중앙대학교 예술대학원, 2015, 24pg

잠재 소비자들에게 단순히 접근성을 높이려는 목적이라면 유튜브나 넷플릭스와 같은 대형 플랫폼을 이용하는 것이 더 효과적이라고 주장하는 사람도 있을 수 있습니다. 그런데 현재 유튜브에서도 넷플릭스에서도 저예산영화가 갖는 위상은 초라합니다. 이는 영화가 갖는 경험재의 특성 때문입니다. 소비자들은 평점이나 후기 등의 구체적인 정보를 통해 영화를 선택하기 때문에 단순히 영화를 볼 수 있는 웹을 개설하는 것만으로는 저예산영화의 접근성을 높일 수 없습니다. 이미 시장을 독식하고 있는 주류 상업 영화의 정보가 기존의 플랫폼을 장악하고 있고, 이는 기존의 플랫폼에서 계속 주류 컨텐츠만을 소비하게 하는 구조를 만들었습니다. 따라서, 저예산영화에 대한 접근성을 높이고자 한다면 주류 컨텐츠를 배제한 저예산영화에 대한 정보만을 공유할 수 있는 플랫폼이 필요합니다.

결론적으로, INDI-THEATER는 저예산영화의 잠재소비자들이 영화를 감상함과 동시에 후기와 여러 기준으로 분류한 평점을 공유할 수 있게끔 서비스를 제공하는 플랫폼입니다. 이 서비스로 인해 저예산영화의 소비가 활성화된다면 저예산영화 제작자들의 수익성 문제도 상당 부분 해소될 것이고, 대중들은 훨씬 다채로운 영화를 향유할 수 있을 것입니다.

구현 기능

1.동영상 끌어오기

안보여요
<iframe
src="https://www.youtube.com/embed/bPNDnoZoIWg"
frameborder="0"
allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture"
allowfullscreen
></iframe>  
    

2.Responsive menu

안보여요

3.애니메이션

안보여요

4.로그인, 로그아웃, 회원가입

회원가입
forms.py
from django.contrib.auth.models import User

class UserForm(forms.ModelForm):

class Meta: model = User fields = ('username', 'password') widgets = { 'password': forms.PasswordInput() }

views.py
@login_required
def new(request):
if request.method == 'POST':
form = ViewForm(request.POST, request.FILES)
post = form.save(commit= False)
post.save()
return redirect('detail', post_pk = post.pk)
else:
form =ViewForm()
return render(request, 'new.html', {'form': form})

@login_required def edit(request, post_pk): post = Post.objects.get(pk = post_pk) if request.method == 'POST': form = ViewForm(request.POST, instance = post) form.save() return redirect('detail', post.pk) else: form = ViewForm(instance = post) return render(request, 'edit.html', {'form':form})

@login_required def delete(request, post_pk): post = Post.objects.get(pk = post_pk) post.delete() return redirect('home')

@login_required def like(request, post_pk): post = Post.objects.get(pk = post_pk) post.post_like += 1 post.save() return redirect('detail', post.pk)

def signup(request): if request.method == 'POST': form = UserForm(request.POST) if form.is_valid(): #is_valid() : 장고 폼이 가진 valid한지 감별해주는 함수 new_user = User.objects.create_user(**form.cleaned_data) auth.login(request, new_user) return redirect('home') else: form = UserForm() error = "아이디가 이미 존재합니다!" return render(request,'registration/signup.html', {'form': form, 'error': error}) else: form = UserForm() return render(request, 'registration/signup.html', {'form' : form})

5.댓글 기능 구현

comment
models.py
class Comment(models.Model):
post = models.ForeignKey(Post, on_delete = models.CASCADE, related_name='comments') #댓글이 속한 글이 지워지면 댓글들도 다 지우도록 함.
내용 = models.TextField()
score = ((1, '★'), (2, '★★'), (3, '★★★'), (4, '★★★★'), (5, '★★★★★'))
창의성=models.IntegerField(choices=score, default=3,)
시사성=models.IntegerField(choices=score, default=3,)
예술성=models.IntegerField(choices=score, default=3,)

class CfComment(models.Model): cfpost = models.ForeignKey(CfPost, on_delete = models.CASCADE, related_name='cfcomments', null=True) #댓글이 속한 글이 지워지면 댓글들도 다 지우도록 함. cfcontent = models.TextField()

forms.py

from .models import Post, Comment, CfPost, CfComment

class CommentForm(forms.ModelForm): class Meta: model = Comment fields = ( '내용', '창의성', '시사성', '예술성' )

class CfCommentForm(forms.ModelForm): class Meta: model = CfComment fields = ( 'cfcontent' , )

6. 게시물 별 조회수

like

조회수가 많은 영화들이 더 상위에 노출되게 하고 싶었다. 일단 그러면 게시물 별로 조회수 정보를 가지고 있어야 했다. 그래서, 모델에서 Post class에 post_hit 라는 변수를 추가하고, 그 내부에 post_hit를 1씩 증가시켜주는 update_counter 함수를 만들었다. 그리고 detail.html의 상위에 {{ post.update_counter }}를 써서, detail 페이지에 접속할 때마다 함수가 실행되도록 하였다. 그리고 model의 update_counter 함수 위에 @property를 써넣는 것은, 변수를 변경할 때 어떠한 제한을 두고 싶어서 넣는 것이라고 하는데, 이 부분에 대해서는 더 공부를 해야할 것 같다.

7. 홈 화면 노출시 조회수 순 정렬 노출 구현

서비스에 있어서 조회수 순 정렬 노출이 중요한 부분이어서 구현을 하였다. 처음에는 home.html에서 게시물 썸네일 하나씩 차례대로 보여주는 for문을 돌리기 전에 조회수 순으로 정렬을 하고 돌리는 방식으로 구현을 하려고 했다. 그런데, 생각을 해 본 결과, 그럴 필요 없이 view.py의 home function에서 post 변수에 Post들을 저장할 때, 정렬을 한 후 저장을 하는 것이 더 간단할 것 같다는 생각이 들었다. 그래서, .order_by(‘-post_hit’)를 추가하여, 각 게시물이 가지고 있는 post_hit의 갯수 순으로 정렬되도록 하도록 하였다. (post_hit의 앞에 -를 붙인 것은 오름차순 정렬로 바꿔주기 위해 추가한 것이다.)

8. 좋아요 기능

이 또한 게시물 별 조회수 기능과 비슷하게, 게시물이 ‘좋아요 갯수’라는 변수를 새로 가지는 것이므로, model에 post_like라는 PositiveIntegerField를 새롭게 만들어주었다. 그 다음 클래스 내부에 post_like를 1씩 더해주는 like_update_counter라는 함수를 만들어주었다. 이 또한 함수 위에 @property를 써넣었다. 그리고 detail 페이지에 좋아요 버튼을 만들었다. 그 다음, 조회수 기능과 같이, detail.html 페이지 내부에서 좋아요 버튼을 클릭하면 model의 like_update_counter함수가 실행되도록 구현을 하려 했다. 그런데 방법을 찾아봐도 모르겠어서 다른 아예 다른 방법을 사용하기로 했다. like/int:post_pk/ 주소를 가진 url을 새로 설정하고, views.py에 self.post_like += 1을 수행하는 like 함수를 새로 만들어주었다. 실험 결과, 원하는 대로 기능이 잘 작동하였고, 이 방법을 사용하기로 했다.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published