본문 바로가기
Personal Project

django로 diary 만들기 [mydiary(글쓰기) 세션 구현] -4

by applepick 2020. 8. 8.
반응형

이번시간에는 templates을 다루어보겠습니다.

{% extends 'menu_bar.html' %}<!--위에 상단바-->
{% block contents %}
{% load static %}
<link rel="stylesheet" href="{% static 'css/home.css'%}">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<body>
{% if user.is_active %}
{% for post in posts.all %}
<div class="main_wrap">
<div class="diary_wrap">
	<div class="content_input">
    <h5 align ="right">글쓴이 : {{ post.username}}</h5> 
    <span class="label">일기 제목:{{ post.title }}</span>
    <br>{{post.pub_date}}
    </div>
    날씨 :
    {% if post.weather == "sunny" %}
		<span class="weather_sunny">
		<input type="radio" id="sunny" name="radio_weather" value="sunny"><label for="sunny">&nbsp;</label>
		</span>        
    {% elif post.weather == "umbrella" %}
        <span class="weather_umbrella">
		<input type="radio" id="umbrella" name="radio_weather" value="umbrella"><label for="umbrella">&nbsp;</label>
		</span>
    {% elif post.weather == "cloud" %}
        <span class="weather_cloud">
		<input type="radio" id="cloud" name="radio_weather" value="cloud"><label for="cloud">&nbsp;</label>
		</span>
    {% elif post.weather == "snow" %}
		<span class="weather_snow">
		<input type="radio" id="snow" name="radio_weather" value="snow"><label for="snow">&nbsp;</label>
		</span>
    {% endif %}  
    기분:
    {% if post.emotion == "happy" %}
    	<span class="emotion_happy">
		<input type="radio" id="happy" name="radio_emotion" value="happy" checked="checked"><label for="happy">&nbsp;</label>
		</span>
    {% elif post.emotion == "love"%}
        <span class="emotion_love">
		<input type="radio" id="love" name="radio_emotion" value="love"><label for="love">&nbsp;</label>
		</span>
    {% elif post.emotion == "angry"%}
    	<span class="emotion_angry">
		<input type="radio" id="angry" name="radio_emotion" value="angry"><label for="angry">&nbsp;</label>
		</span>
    {% elif post.emotion == "crying"%}
        <span class="emotion_crying">
		<input type="radio" id="crying" name="radio_emotion" value="crying"><label for="crying">&nbsp;</label>
		</span>
    {% elif post.emotion == "serious"%}
    {% elif post.emotion == "sleepy"%}
    	<span class="emotion_sleepy">
		<input type="radio" id="sleepy" name="radio_emotion" value="sleepy"><label for="sleepy">&nbsp;</label>
		</span>
    {% endif %}
		<textarea placeholder="일기 내용" onkeyup="autoTextarea(this,2000)" id="text" name="text" rows="4" style="word-wrap: break-word; resize: none; height: 150px; ">{{ post.content }}</textarea>  
    <br><br>
		<p><a href="{%url 'detail' post.id %}"><input class="btn btn-secondary" type="submit" value="자세히보기"></a>
	{% if user == post.username %}
		<a href="{%url 'delete' post.id %}"><input class="btn btn-secondary" type="submit" value="글삭제"></a></p>
	{%endif%}
</div>
</div>
{% endfor %}

<!--로그인 안되었을떄 일기장 못보게 하기-->
{% else %}
	 <br><br><div class="card text-white bg-dark mb-3" style="max-width: 40rem; float: none; margin: 0 auto;">
    <div class="form-group" align="center">
    <br><h3 align="center">잘못된 접근입니다.<br> 로그인해주세요</h3>
    <br>
    <a href="{% url 'signup' %}"><input class="btn btn-dark" type="submit" value="회원가입"></a>
    <a href="{% url 'login' %}"><input class="btn btn-dark" type="submit" value="로그인"></a>
    <a href="{% url 'home' %}"><input class="btn btn-dark" type="submit" value="홈으로 돌아가기"></a>
	</div>
    </div>
<div class="bg" style="max-width: 30rem; float: none; margin: 0 auto;">
    <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
</div>
{% endif %}
</body>


{% endblock %}

view_diary.html에 대한 코드입니다.

로그인되었을때와 비로그인일떄를 나누어 사용자에게 보이도록 하였습니다. 결과는

이런식으로 로그인하지않고 url로 직접 입력해서 들어갈려고하면 이런식으로 보여지도록 하였습니다.

로그인 했을때는

이런 식으로 글을 보여주지만, 자신의 글만 삭제할 수 있도록 만들었습니다.

그 부분이 바로 

	{% if user == post.username %}
		<a href="{%url 'delete' post.id %}"><input class="btn btn-secondary" type="submit" value="글삭제"></a></p>
	{%endif%}

이부분입니다. 지금로그인 되어있는 유저와 db안에 포스트를 쓴 유저를 비교해서 만약 같으면 글삭제 버튼이 나타나도록 만들었습니다. 

다음시간에는 write_diary를 설명해보겠습니다.

반응형

댓글