728x90
글쓰기 만들기
저번에 만든 게시판 기능에 글쓰기 기능을 추가해 보겠다.
일단 글쓰기에 사용될 html코드를 부트스트랩의 기본 예제로 간단하게 만들어 보았다.
<html>
<head>
<meta charset="UTF-8">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
<style>
.nav_1{
background: rgba(0,0,0,0.1);
border-bottom: 1px solid gray;
height: 50px;
text-align: right;
}
.form{
margin:30px;
}
</style>
</head>
<body>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.10.2/dist/umd/popper.min.js" integrity="sha384-7+zCNj/IqJ95wo16oMtfsKbZ9ccEh31eOz1HGyDuCQ6wgnyJNSYdrPa03rtR1zdB" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.min.js" integrity="sha384-QJHtvGhmr9XOIpI6YVutG+2QOK9T+ZnN4kzFN1RtK3zEFEIsxhlmWl5/YESvpZ13" crossorigin="anonymous"></script>
<div class="nav_1">
<ul class="nav justify-content-end">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="/">홈</a>
</li>
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">비트코인</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/finance/stock">주식</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/bored/list"> 게시판</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/user/sign_up">회원가입</a>
</li>
<li class="nav-item">
<a class="nav-link" href = "/user/login">로그인</a>
</li>
</ul>
</div>
<form class = "form" action="." method = "post">
{% csrf_token %}
<p>{{error}}</p>
<div class="mb-3">
<label for="exampleFormControlInput1" class="form-label">제목</label>
<input type="text" class="form-control" id="title" placeholder="제목" name = 'title'>
</div>
<div class="mb-3">
<label for="exampleFormControlTextarea1" class="form-label">내용</label>
<textarea class="form-control" id="contents" rows="3" name = 'contents'></textarea>
</div>
<div class = "row justify-content-end">
<div class = col>
<button type = 'submit' class = "btn btn-primary">글쓰기</button>
</div>
</div>
</form>
</body>
</html>
그리고 view을 작성해 주었다.
def bored_write(request):
if request.method == 'GET':
return render(request,'bored_write.html')
else:
user_id = request.session.get('user')
if user_id == None:
return HttpResponse('로그인 후 이용가능합니다.')
else:
writer = user.objects.get(pk=user_id)
title = request.POST.get('title',None)
contents = request.POST.get('contents',None)
res_data = {}
if not(title and contents):
res_data['error'] = '모든 값을 입력해야됩니다.'
return render(request,'bored_write.html',res_data)
else:
write = Bored(
title = title,
contents = contents,
writer = writer
)
write.save()
return redirect('/bored/list')
회원가입의 코드와 크게 다르지 않아서 새롭게 추가한 내용만 설명해보겠다.
user_id = request.session.get('user')
일단 세션에서 로그인 여부를 가져와서 만약 값이 None이면 로그인후 이용가능하다는 문구가 나오도록 해주었다.
writer = user.objects.get(pk=user_id)
그리고 user의 데이터베이트에서 user_id의 데이터베이스을 가져와서 글쓴이를 알 수 있었다.
다음으로 저장을 해주고 다시 bored 페이지로 넘어 갈 수 있도록 redirect를 해주었다.
글이 잘 작성되는것을 볼 수 있다. 다음 글에는 이 커뮤니티에 다양한 기능을 추가해보겠다.
728x90
'파이썬' 카테고리의 다른 글
[Django Project][주식 종목 추천 프로그램 웹에서 구현] (0) | 2021.12.24 |
---|---|
[Django project][community 만들기 - 게시판 만들기(1)] (0) | 2021.12.23 |
[Django Project][community 만들기 - 세션과 로그인] (0) | 2021.12.12 |
[Django Project][community 만들기 - url 설정하기] (0) | 2021.12.12 |
[Django Project][community 만들기 - template과 view 만들어 주기] (0) | 2021.12.12 |