๊ฒ์๊ธ ์ฝ์ด์ค๊ธฐ
tweet์ ๋ถ๋ฌ์ฌ ๋ ๊ฒ์๊ธ์ ๊ฐ์ด ๋ถ๋ฌ์ฌ๊ฑฐ๋ค!
tweet ์ฑ์ views.py ์ด์ด์ ํจ์ ์์ ํ์
def tweet(request):
if request.method == 'GET': # ์์ฒญํ๋ ๋ฐฉ์์ด GET ๋ฐฉ์์ธ์ง ํ์ธํ๊ธฐ
user = request.user.is_authenticated # ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธ์ด ๋์ด ์๋์ง ํ์ธํ๊ธฐ
if user: # ๋ก๊ทธ์ธ ํ ์ฌ์ฉ์๋ผ๋ฉด
all_tweet = TweetModel.objects.all().order_by('-created_at')
return render(request, 'tweet/home.html', {'tweet':all_tweet})
else: # ๋ก๊ทธ์ธ์ด ๋์ด ์์ง ์๋ค๋ฉด
return redirect('/sign-in')
get ์์ฒญ์ผ๋ก ๋ฐ์์ฌ๊ฑด๋ฐ
์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธ์ด ๋์ด์์ผ๋ฉด ๊ธ์ ๋ชจ๋ ๋ถ๋ฌ์ฌ๊ฑฐ๋ค
all_tweet ์ด๋ผ๋ ๋ณ์์ TweetModel์ ์ ์ฅํ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ฌ๊ฑด๋ฐ ์ต์ ์์ผ๋ก ๋ถ๋ฌ์ค๋ผ!
{'tweet':all_tweet}
ํค๊ฐ์ด tweet์ธ ๋์ ๋๋ฆฌํํ๋ก ๋๊ฒจ์ค๋ค.
์ฝ์ด์จ ๊ฒ์๊ธ ํ๋ฉด์ ๋ ธ์ถ์ํค๊ธฐ
home.html์ ๋ค์ด๊ฐ์ ์์ฑ๋ ๊ธ์ด ๋์ค๋ ๊ณณ์ ์์ ํด์ฃผ์
<hr> ํ๊ทธ ์ฐพ์ผ๋ฉด ๋น ๋ฅด๋ค!
์๋ ์ฝ๋์ฒ๋ผ ์์ ํด์ฃผ์!
<!-- templates/tweet/home.html -->
<hr>
<!-- ์์ฑ ๋ ๊ธ์ด ๋์ค๋ ๊ณณ -->
<div class="row">
{% for tw in tweet %}
<div class="col-md-12 mb-2">
<div class="card">
<div class="card-body">
<div class="media">
<div class="media-body">
<h5 class="mt-0">{{ tw.content }}</h5>
</div>
<div style="text-align: right">
<span style="font-size: small">{{ tw.author.username }}-{{ tw.created_at|timesince }} ์ </span>
</div>
</div>
</div>
</div>
</div>
{% endfor %}
</div>
{% for tw in tweet %} : ์๊น ๋ง๋ ๋์ ๋๋ฆฌ์ key ๊ฐ์ธ tweet์ ๊ฐ์ง๊ณ ํ๋ฉด์์ ์ถ๋ ฅ์ ํ๊ธฐ ์ํจ
{{ tw.content }} : ์์ฑํ๋ ์ ๋ณด
{{ tw.author.username }}-{{ tw.created_at|timesince }} ์ : tweet/models.py์ ๋ณด๋ฉด author ๋ถ๋ถ์ UseModel์ด ์๋๋ฐ ์ด ๋ชจ๋ธ์์ ๊ฐ๊ณ ์๋ ์ ๋ถ๋ฅผ ๊ฐ์ ธ์จ ๊ฒ์ด๋ค! tw.author๋ผ๊ณ ๋ง ํ๋ฉด ๊ทธ ์ ๋ถ๋ฅผ ๋ค ๊ฐ์ ธ์ค๋๊ฑฐ๋ผ์ .username์ ํด์ค์ผ๋ก์จ ์ด๋ฆ๋ง ๊ฐ์ ธ์ค๋ ๊ฒ!
์ด๋ ๊ฒ ์์ ํด์ฃผ๊ณ ์๋ก๊ณ ์นจ ํด์ฃผ๋๊น
๊ทธ๋์ ์ ๋ ฅํ๋๊ฒ ์์ฃผ ์ ๋์จ๋ค!
๊ธ ์ญ์ ํ๊ธฐ
๊ฒ์๊ธ์ ๊ฐ๊ฐ์ ๊ณ ์ ํ ๊ฒ์๊ธ id๊ฐ ์๋ค!
๊ฒ์๊ธ ์ญ์ view ๋ง๋ค๊ธฐ
tweet์ฑ์ views.py์ ์๋ ์ฝ๋๋ก ์์ ํ์
# tweet/views.py
from django.contrib.auth.decorators import login_required
@login_required #๋ก๊ทธ์ธ ํ ์ฌ์ฉ์๋ง ์ ๊ทผ์ด ๊ฐ๋ฅํ๊ฒ ํด์ค! import ํ์
def delete_tweet(request, id):
my_tweet = TweetModel.objects.get(id=id)
my_tweet.delete()
return redirect('/tweet')
urls ์ฐ๊ฒฐํ๊ธฐ
tweet๋ฉ์ urls.py ์ฝ๋ ์์ ํ๊ธฐ
# tweet/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.home, name='home'),
path('tweet/', views.tweet, name='tweet'),
path('tweet/delete/<int:id>', views.delete_tweet, name='delete-tweet'),
]
๋งจ ์๋ ์ฝ๋ ์ถ๊ฐํด์ฃผ์
home.html์ ๊ฒ์๊ธ ์ญ์ ํ๋ url ๋ฃ์ด์ฃผ๊ธฐ
<!-- ์์ฑ ๋ ๊ธ์ด ๋์ค๋ ๊ณณ -->
<div class="row">
{% for tw in tweet %}
<div class="col-md-12 mb-2">
<div class="card">
<div class="card-body">
{% if tw.author == user %}
<div style="text-align: right">
<a href="/tweet/delete/{{ tw.id }}">
<span class="badge rounded-pill bg-danger">์ญ์ </span>
</a>
</div>
{% endif %}
<div style="text-align: right">
<a href="#">
<span class="badge rounded-pill bg-success">๋ณด๊ธฐ</span>
</a>
</div>
<div class="media">
<div class="media-body">
<h5 class="mt-0">{{ tw.content }}</h5>
</div>
<div style="text-align: right">
<span style="font-size: small">{{ tw.author.username }}-{{ tw.created_at|timesince
}} ์ </span>
</div>
</div>
</div>
</div>
</div>
{% endfor %}
</div>
</div>
<div class="col-md-2"></div>
</div>
</div>
{% endblock %}
์ง๋!!!! ์ด์ ๋๋ค!!~~~!!~~~!~!
'๐๐ช > Django' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
4์ฃผ์ฐจ_2๋ฒ์งธ django shell (0) | 2022.09.24 |
---|---|
4์ฃผ์ฐจ_1๋ฒ์งธ_๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๊ณ, Many -to - Many ๋ชจ๋ธ ๋ฑ๋ก (0) | 2022.09.24 |
3์ฃผ์ฐจ_5๋ฒ์งธ_๊ฒ์๊ธ ์ฐ๊ธฐ (0) | 2022.09.23 |
3์ฃผ์ฐจ_4๋ฒ์งธ_๋ก๊ทธ์ธ ํ์ ๊ธฐ๋ฅ, ๋ก๊ทธ์์ ๋ง๋ค๊ธฐ (1) | 2022.09.23 |
3์ฃผ์ฐจ_3๋ฒ์งธ_๋ก๊ทธ์ธ ์ดํ ๊ธฐ๋ฅ ๋ค๋ฌ๊ธฐ (0) | 2022.09.23 |
๋๊ธ