250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- eager
- exclusive lock
- shared lock
- 즉시로딩
- dfs
- 백트래킹
- 힙
- 일대다
- querydsl
- 스프링 폼
- 연관관계
- 스토어드 프로시저
- 동적sql
- 데코레이터
- JPQL
- 낙관적락
- 이진탐색
- 다대다
- 비관적락
- BOJ
- FetchType
- SQL프로그래밍
- fetch
- PS
- 유니크제약조건
- 연결리스트
- 다대일
- execute
- CHECK OPTION
- 지연로딩
Archives
- Today
- Total
흰 스타렉스에서 내가 내리지
사용자가 media 를 업로드 할 수 있도록 본문
728x90
settings.py
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
MEDIA_ROOT : 사용자가 업로드 한 미디어가 저장되는 경로
MEDIA_URL : 업로드 된 미디어에 접근할 수 있는 경로
urls.py
from django.conf.urls.static import static
from django.conf import settings
...
...
...
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
models.py
class Blog(models.Model):
title = models.CharField(max_length=200)
body = models.TextField()
# photo = models.ImageField(blank=True, null=True, upload_to='blog_photo')
photo = models.FileField(default="", blank=True, null=True, upload_to='blog_photo')
date = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title
upload_to='폴더 명' : 사용자가 업로드한 미디어들이 media 폴더 안에 blog_photo(없으면 만들어줌) 안에 넣는다.
forms.py
class BlogModelForm(forms.ModelForm):
class Meta:
model = Blog
fields = '__all__' # Model의 Blog 모델을 전부 입력받을 것이다
# fields = ['title', 'body'] # 특정 필드만 입력받고 싶을 때
form_create.html
<h1>django form을 이용한 새 글 작성 페이지</h1>
<form action="{% url 'modelformcreate' %}" method='POST' enctype="multipart/form-data">
{% csrf_token %}
<table>
{{ form.as_table }}
</table>
<input type="submit" value='새 글 작성하기'>
</form>
enctype="multipart/form-data" : 폼에 파일을 업로드한다면 무조건 추가해줘야 한다
views.py
def modelformcreate(request):
if request.method == 'GET':
form = BlogModelForm()
elif request.method == 'POST' or request.method == 'FILES':
form = BlogModelForm(request.POST, request.FILES)
if form.is_valid(): # 폼 데이터를 자동으로 유효성 검사를 해줌
form.save()
return redirect('home')
return render(request, 'form_create.html', {'form': form})
detail.html
<h1>제목</h1>
{{ blog_detail.title }}
<h2>날짜</h2>
{{ blog_detail.date }}
<h3>본문</h3>
{{ blog_detail.body }}
{% if blog_detail.photo %}
<img src="{{ blog_detail.photo.url }}" alt="">
{% endif %}
'Django' 카테고리의 다른 글
회원가입, 로그인, 로그아웃 (0) | 2022.06.08 |
---|---|
댓글 (0) | 2022.06.08 |
게시글 detail 페이지 구현 (0) | 2022.06.08 |
DB에 담긴 데이터들을 html에 띄워보자 (0) | 2022.06.07 |
modelForm (0) | 2022.06.07 |