๐๐ช/Django28 4์ฃผ์ฐจ_2๋ฒ์งธ django shell Django Shell : Django๋ฅผ ์คํํ์ง ์๊ณ ๋ ๊ธฐ๋ฅ๋ค์ ์ฌ์ฉ ํ ์ ์๋๋ก ๋์์ฃผ๋ ๋๊ตฌ Django Shell ์ฌ์ฉํ๊ธฐ 1. ์๋ฒ ์ค์ง์ํค๊ณ ํฐ๋ฏธ๋ ์คํ 2. shell ์์ํ๊ธฐ # shell ์คํ >>> python manage.py shell #restaurant๋ชจ๋ธ์์ MyTopping,MyPizza ๋ถ๋ฌ์ค๊ธฐ >>> from restaurant.models import MyTopping, MyPizza 3. ํผ์ ๋ชจ๋ธ์์ ํ ํ ๋ถ๋ฌ์ค๊ธฐ #์ ์ฒด ํผ์ >>> MyPizza.objects.all() # ํผ์๋ฅผ ํ๋์ฉ ๋ถ๋ฌ๋ณผ๊ฒ์ >>> MyPizza.objects.get(pizza_name='๋๋ฏธ๋ ธ') >>> MyPizza.objects.get(pizza_name='ํผ์ํ') >>> MyPiz.. 2022. 9. 24. 4์ฃผ์ฐจ_1๋ฒ์งธ_๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๊ณ, Many -to - Many ๋ชจ๋ธ ๋ฑ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ข ๋ฅ 1. one - to - many ํ๊ฐ์ ๊ธ์ ๋ง์ ์ฌ์ฉ์๊ฐ ์์ฑ์ ํ ์ ์๊ณ , ํ ๋ช ์ ์ฌ์ฉ์๊ฐ ์ฌ๋ฌ ๊ฐ์ ๊ธ์ ์์ฑํ ์ ์๋ค. ์ด๋ฌํ ๊ด๊ณ๊ฐ one-to-many ๋ค! class UserModel(AbstractUser): class Meta: db_table = "my_user" bio = models.TextField(max_length=500, blank=True) class TweetModel(models.Model): class Meta: db_table = "tweet" author = models.ForeignKey(UserModel, on_delete=models.CASCADE) content = models.CharField(max_length=256) creat.. 2022. 9. 24. 3์ฃผ์ฐจ_6๋ฒ์งธ_๊ฒ์๊ธ ์ฝ๊ธฐ/์ญ์ ๊ฒ์๊ธ ์ฝ์ด์ค๊ธฐ 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').. 2022. 9. 23. 3์ฃผ์ฐจ_5๋ฒ์งธ_๊ฒ์๊ธ ์ฐ๊ธฐ ๊ฐ์ url์ด๋ผ๋ ์์ฒญ๋ฐฉ์(get, post)์ด ๋ค๋ฅด๋ฉด ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ์ ๊ทผ์ด ๋๋ค! ๊ฒ์๊ธ ์ฐ๊ธฐ ๊ธ ์์ฑํ html ๋ง๋ค๊ธฐ templates > tweet > home.html ์ด๊ธฐ form์ ๊ธ์ ์ ๋ ๊ณต๊ฐ์ธ๋ฐ form ์์ submit์ด ์์ผ๋ฉด ๊ทธ ์์ ์๋ ๋ด์ฉ์ ์๋ฒ๋ก ๋ณด๋ด์ฃผ๋๊ฑฐ๋ค! /tweet์ผ๋ก ๋ณด๋ผ๊ฒ์ด๊ณ , POST๋ก ๋ณด๋ผ๊ณ , ์ํธํ๋ ํด์ฃผ์ {% csrf_token %} ๊ธ ์ ์ฅํ view ๋ง๋ค๊ธฐ url์ ํด๋นํ๋ view๋ฅผ ์ค์ ํด์ฃผ์ tweet์ฑ์ urls.py๋ก ๋ค์ด๊ฐ๋ฉด path('tweet/', views.tweet, name='tweet') ์ด๋ฏธ tweet์ด๋ผ๋ url๋ก ์ ์ฉ๋์ด์๋ ํจ์๊ฐ ์๋ค views.py์ ์๋ค! ๋ญ ๋ฐ์์ฌ์ง templates/tweet์ home์ ๊ฐ์ ํ์ธํด.. 2022. 9. 23. 3์ฃผ์ฐจ_4๋ฒ์งธ_๋ก๊ทธ์ธ ํ์ ๊ธฐ๋ฅ, ๋ก๊ทธ์์ ๋ง๋ค๊ธฐ 1. ๋ก๊ทธ์ธ์ ์ํ ์ํ์ฌ๋ ์ฃผ์์ฐฝ์ /tweet์ด๋ผ๊ณ ์น๋ฉด ํ๋ฉด์ด ๋์ค๊ณ 2. ๋ก๊ทธ์์ ๊ธฐ๋ฅ์ ๊ตฌํ ์ํด์คฌ๋ค! 2๊ฐ์ง๋ฅผ ํด๋ณด์! ๋ก๊ทธ์ธํด์ผ๋ง ๋ค์ด๊ฐ ์ ์๋ ํ์ด์ง ์ค์ ํ๊ธฐ 1. tweetํ์ด์ง๋ฅผ ๋ก๊ทธ์ธ์ ํด์ผ ๋ณผ ์ ์๊ฒ ์ค์ ํ์!(์ฃผ์์ฐฝ์ /tweet ์ณ๋ /sign-in ๋์ค๊ฒ!) - tweet์ urls.py ์ฝ๋๋ฅผ ๋ณด์ urlpatterns = [ path('', views.home, name='home'), # 127.0.0.1:8000 ๊ณผ views.py ํด๋์ home ํจ์ ์ฐ๊ฒฐ path('tweet/', views.tweet, name='tweet') # 127.0.0.1:8000/tweet ๊ณผ views.py ํด๋์ tweet ํจ์ ์ฐ๊ฒฐ ] ์ฌ๊ธฐ์ ๋งจ ๋ฐ์์ค์ ๋ณด๋ฉด views.twee.. 2022. 9. 23. 3์ฃผ์ฐจ_3๋ฒ์งธ_๋ก๊ทธ์ธ ์ดํ ๊ธฐ๋ฅ ๋ค๋ฌ๊ธฐ ํ์ฌ ๋ก๊ทธ์ธํ๋ฉด ์ฌ์ฉ์ ์ด๋ฆ๋ง ๋จ๋ ์ํฉ์ด๋ค! ํ ํ๋ฉด์ ๋ง๋ค์ด์ฃผ๊ณ ๋ก๊ทธ์ธ ํ๋ฉด ํ ํ๋ฉด์ผ๋ก ๊ฐ ์ ์๋๋ก ํด์ฃผ์! ๋ก๊ทธ์ธ ํ ์ด๋ํ ํ์ด์ง ๋ง๋ค๊ธฐ! 1. ํด๋ ๋ง๋ค๊ธฐ! ์๋์ฒ๋ผ templates ํด๋ ์์ tweet ํด๋๋ฅผ ๋ง๋ค๊ณ home.html ๋ง๋ค๊ณ ์ฝ๋ ๋ถ์ฌ๋ฃ์ home.html ๋๋ณด๊ธฐ {% extends 'base.html' %} {% block content %} Card title Card subtitle Some quick example text to build on the card title and make up the bulk of the card's content. ๋์ ์ด์ผ๊ธฐ๋ฅผ ์ ์ด์ฃผ์ธ์ ์์ฑํ๊ธฐ Media heading Will you do the same for me? It's.. 2022. 9. 23. 3์ฃผ์ฐจ_2๋ฒ์งธ_ํ์๊ฐ์ , ๋ก๊ทธ์ธ ์์ ํ๊ธฐ ์ง๋ ์๊ฐ์ ๊ธฐ๋ณธ์ ์ธ ์ฅ๊ณ ์ ์ฌ์ฉ์ ๋ชจ๋ธ์ ๋ฐ๊ฟ์ AUTH_USER_MODEL์ user.UserModel ํด๋์ค๋ฅผ ๋ฃ์ด์คฌ๊ธฐ ๋๋ฌธ์ ์ด ๋ฐ๋ ๋ด์ฉ์ ์ ์ ์์ฑํ๋ ํ์๊ฐ์ , ๋ก๊ทธ์ธ ๋ชจ๋ธ์์๋ ๋ชจ๋ ๋ฐ๊ฟ์ค์ผ ํ๋ค! user ์ฑ์ views.py์ ์๊ธฐ ๋๋ฌธ์ ํ์ผ ์์ ํด์ฃผ์! ํ์๊ฐ์ ์์ ํ๊ธฐ(sign_up_view) user ์ฑ์ views.py์ sign_up_view ํจ์๋ฅผ ์์ ํด๋ณด์! ๋จผ์ ๋งจ ์๋จ์ ์๋ ์ฝ๋๋ฅผ ์ ๋ ฅํ์ # user/views.py from django.contrib.auth import get_user_model #์ฌ์ฉ์๊ฐ ์๋์ง ๊ฒ์ฌํ๋ ํจ์ post๋ฅผ ์์ ํด์ผ ํ๋ค! # user/views.py def sign_up_view(request): if request.method .. 2022. 9. 23. 3์ฃผ์ฐจ_1๋ฒ์งธ_์ฌ์ฉ์ ๋ชจ๋ธ ๋น๊ต, ๋ชจ๋ธ ์ ๊ทธ๋ ์ด๋, ์ ์ฉ ์ง๋๋ฒ์ createsuperuser ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํด์ ๊ด๋ฆฌ์๋ฅผ ๋ง๋ค์์๋๋ฐ orm ๋ชจ๋ธ์ ๋ง๋ค์ง ์์๋๋ฐ๋ ๊ฐ๋ฅํ๋ ์ด์ ๋ ์ฅ๊ณ ์์ ๊ธฐ๋ณธ์ผ๋ก ์ ๊ณตํ๋ user๋ชจ๋ธ๊ณผ ๋ก๊ทธ์ธ/๋ก๊ทธ์์ ๊ธฐ๋ฅ์ด ์๊ธฐ ๋๋ฌธ์ด๋ค! ๋ก๊ทธ์ธ์ด ์ด๋ฃจ์ด์ง๋ ๋ฐฉ๋ฒ์ ์๊ธฐ ์ํด์ ์ฌ์ฉ์ ๋ชจ๋ธ๋ถํฐ ๋ก๊ทธ์ธ๊น์ง ๊ตฌํ ํ์๋๋ฐ ์ด ๊ณผ์ ๋ค์ด Django์ ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด ์์ฒญ ํธํ๊ฒ ์ง... ํจ ๋ณด์!!! ๋ฐ์ดํฐ๋ฒ ์ด์ค์ db.sqlite3์ ๋ณด๋ฉด django์์ ์ ๊ณตํ๋ auth_user๊ฐ ๋ ๋ง์ ํ ์ด๋ธ์ด ์๋ค! ํ์ง๋ง my_user์ bio ์ ์ฅํ๋ ๊ณณ์ ์๋ค. ๊ทธ๋ฌ๋๊น ๋์ด ๊ฐ์ด ์ฌ์ฉํ๋ฉด ์ข๊ฒ ๋ค! ์์ ๊ฐ๋ณ๊ฒ ํ์ธํ๊ธฐ User ๋ชจ๋ธ ์ ๊ทธ๋ ์ด๋ ํ๊ธฐ 1. user ์ฑ์ models.py ์์ ํ๊ธฐ user์ฑ์ models.py๋ฅผ ๋ณด๋ฉด mode.. 2022. 9. 23. 2์ฃผ์ฐจ_5๋ฒ์งธ_๋ก๊ทธ์ธ ๊ธฐ๋ฅ ๋ง๋ค๊ธฐ ํ์๊ฐ์ ํ์ผ๋๊น ๋ก๊ทธ์ธ๋ ๋ ์ ์๊ฒ ํด๋ณด์!!!! ํ์๊ฐ์ ์ผ๋ก ์ ์ฅ๋ ์ ์ ๋ฅผ ๋ก๊ทธ์ธ ํ ์ ์๊ฒ ํด์ฃผ์! ์ธ์ ์ ์ด์ฉํ ๊ฑด๋ฐ ์ธ์ ์ ๊ฐ์ ์ฌ๋์ด ์์ฒญํ๋์ง ํ์ธํ ์ ์๋๋ก ๋์์ฃผ๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์์ ์ ๋ณด๋ฅผ ์ ์ฅํ ์ ์๋ค! 1. user ์ฑ์ views.py ์ธํ ํ๊ธฐ 2. signin.html์ form ํ๊ทธ ์์ฑ ๋ฃ๊ธฐ 3. view์ ๋ก๊ทธ์ธ ์์ ๋ง๋ฌด๋ฆฌํ๊ธฐ 1. user ์ฑ์ views.py ์ธํ ํ๊ธฐ from django.shortcuts import render, redirect from .models import UserModel from django.http import HttpResponse # Create your views here. def sign_up_view(request): if .. 2022. 9. 23. 2์ฃผ์ฐจ_4๋ฒ์งธ_ํ์๊ฐ์ ๊ธฐ๋ฅ ๋ง๋ค๊ธฐ ํ์๊ฐ์ ๊ธฐ๋ฅ ๋ง๋ค๊ธฐ ํ์๊ฐ์ ํ์ด์ง๋ฅผ ๋ณด์ฌ์ฃผ๋ url์ user์ฑ์ views.py์ /sign-up์ด๋ค! 'GET' ๋ฐฉ์์ผ๋ก ํ์๊ฐ์ ํ๋ฉด์ ๋ณด์ฌ์ฃผ๊ณ 'POST' ๋ฐฉ์์ผ๋ก ๊ฐ์ ์ ๋ณด๋ฅผ ์ ๋ ฅํ๊ณ ์ ์กํ์! 1. user ์ฑ์ views.py ์ธํ ํ๊ธฐ 2.singup.html์ form ํ๊ทธ ์์ฑ ๋ฃ๊ธฐ 3. user ์ฑ์ views.py ๋ง๋ฌด๋ฆฌํ๊ธฐ 1. user ์ฑ์ views.py ์ธํ ํ๊ธฐ - user์ฑ์ views.py์ sign_up_view์ GET์ถ๊ฐํ๊ธฐ ํ๋ฉด์์ ์ฅ๊ณ ์๋ฒ๋ก url ์์ฒญ์ด ๊ฐ์ ๋ ์ฅ๊ณ ์๋ฒ๊ฐ url์ ์์ฒญ๋ฐฉ์์ ํ์ธํ๊ณ get์ผ ๊ฒฝ์ฐ์ ํ๋ฉด์ ๋ณด์ฌ์ฃผ๊ฒ ๋ค๋ ๊ฒ! - user์ฑ์ views.py์ sign_up_view์ POST์ถ๊ฐํ๊ธฐ post ์์ฒญ ์์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ์ฅํ๋.. 2022. 9. 23. 2์ฃผ์ฐจ_3๋ฒ์งธ_ํ์๊ฐ์ , ๋ก๊ทธ์ธ ํ๋ฉด ๋์ฐ๊ธฐ ํฌํ๋ฆฟ์ ๋ง๋ค๊ณ url - view - templates๋ฅผ ์ด์ด์ค๋ค url์ ์ฐ๊ฒฐํ user์ฑ์ urls.py ์์ฑ user ์ฑ์ ์๋ urls.py์ mySpartaSns ์์ ์๋ urls.py์ ์ฐ๊ฒฐ user์ urls.py์ ์ฐ๊ฒฐ ํ user ์ฑ์ views.py ์์ฑ user ์ฑ์ views.py์ user ์ฑ์ urls.py ์ฐ๊ฒฐ ํฌํ๋ฆฟ ๋ง๋ค๊ธฐ ์๋์ ๊ฐ์ ํด๋์ html ํ์ผ ๋ง๋ค์ด์ฃผ๊ณ ๋ด์ฉ ๋ฃ๊ธฐ templates/base.html ๋๋ณด๊ธฐ SpartaSNS ์น๊ตฌ Sign In Sign Up {% block content %} {% endblock %} templates/user/signup.html ๋๋ณด๊ธฐ {% extends 'base.html' %} {% block title %} ํ์๊ฐ์ .. 2022. 9. 22. 2์ฃผ์ฐจ_2๋ฒ์งธ_Tweet ์์ ํ๊ธฐ ์ด๋ฒ์๋ tweet์ ์์ ํด์ฃผ์ user ์ฒ๋ผ ๋น์ทํ๋๊น ๋ณต์ตํ๋ค ์๊ฐํ๊ณ ๋ ์ต์ํด์ ธ๋ณด์! ์ ์๋ ์ฌ์ฉ์๋ฅผ ๋ง๋ค์๊ธฐ ๋๋ฌธ์ user ์ฑ์ผ๋ก ํ์ง๋ง ์ด๋ฒ์๋ ๊ธ์ ๋ง๋ค ๊ฒ์ด๊ธฐ ๋๋ฌธ์ tweet ์ฑ์์ ์งํํ ๊ฒ! tweet์ ์ด์ฉํด์ sns ๊ฒ์๊ธ์ ๋ง๋ค ๊ฑฐ๋ค!!! ์์ฑ์, ๊ธ ๋ด์ฉ, ์์ฑ์ผ์, ์์ ์ผ์ ์ ๋ ๋ฃ์ด์ฃผ์ ํ๋ก์ ํธ ๊ตฌ์กฐ์ db์ฐ๊ฒฐ, db.sqlite3 ์์ฑ ํ์ธ์ ์ ์ ํ์ผ๋๊น ๋ชจ๋ธ๋ง๋ค๊ธฐ๋ถํฐ ์์ํ์! ๋ชจ๋ธ ๋ง๋ค๊ณ , db์ ๋ฃ๊ณ , ๊ด๋ฆฌ์ ๊ณ์ ์ ๋ฃ์ด์ฃผ๋ฉด ๋๊ฒ ๋ค! 1. tweet ๋ชจ๋ธ ๋ง๋ค๊ธฐ tweet ํด๋์ models.py์ ์๋ ์ฝ๋ ๋ถ์ฌ๋ฃ์ # tweet/models.py from django.db import models from user.models import UserModel #.. 2022. 9. 22. ์ด์ 1 2 3 ๋ค์ 728x90