๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ“๐Ÿ’ช/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.
728x90