본문 바로가기

Django48

11. Django Shell Django Shell은 Django의 기능들을 코딩 없이 사용할 수 있게 해주는 기능이다. 주로 데이터를 확인하고 테스트 해보는 용도로 사용된다. python manage.py shell >>> #이게 나오면 정상 실행된것이다. >>> from restaurant.models import MyTopping, MyPizza >>> MyPizza.objects.all() >>> MyPizza.objects.get(pizza_name='Prperoni Pizza') >>> MyPizza.objects.get(pizza_name='Cheese Pizza') >>> MyPizza.objects.get(pizza_name='Cheese Pizza').pizza_topping.all() 당연하겠지만 .pizza_t.. 2022. 5. 30.
10. Django 데이터베이스 관계 1. one-to-many 하나가 여러개가 대응이 되는것이다. 하단의 코드를 보자. Tweet Model의 author는 ForeignKey로써 하나의 유저만이 들어갈 수 있다. 즉, 한 개의 글에는 한 명의 작성자만이 글을 쓸 수 있다. 반대로 한 명의 사용자가 여러개의 글을 작성할 수 있다. 이러한 관계가 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(User.. 2022. 5. 30.
9. Django 게시글 읽기/삭제 1. 읽기 읽기는 그냥 GET인데??? 맞다. 그냥 GET이다. 그리고 데이터를 받아오는것도 GET이다. 생각해보니 전에 7강에서 작성한 내용을 database에서 받아오는 행위가 없다. 이를 구현하자. 그렇다 tweet/views.py GET을 수정하면 된다. def tweet(request): if request.method == 'GET': user = request.user.is_authenticated if user: #수정된 부분 all_tweet = Tweet.objects.all().order_by('created_at') #만든 순으로 정렬 return render(request, 'tweet/home.html', {'tweet':all_tweet}) else: return redirec.. 2022. 5. 27.
8. Django 게시글 쓰기 게시글을 작성하기 위해 요 부분을 수정할 것이다. tweet/home.html 수정 전 나의 이야기를 적어주세요 작성하기 수정 후 나의 이야기를 적어주세요 {% csrf_token %} 작성하기 tweet/urls.py에는 이미 작성이 되어있기에 views.py로 넘어가준다. tweet/views.py from .models import Tweet def tweet(request): elif request.method == 'POST': user = request.user my_tweet = Tweet() my_tweet.author = user my_tweet.content = request.POST.get('my-content', '') my_tweet.save() return redirect('/t.. 2022. 5. 27.
7. Django 로그인 이후 기능 전까지는 로그인, 회원가입, admin(관리자) 페이지를 만들었다면 이제는 로그인 후의 페이지를 만들어야 된다. 쉽게 말해서 '/'경로의 페이지를 만들어주는 과정을 진행할 것이다. 1. templates/tweet/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 time to face the music I'm no longe.. 2022. 5. 27.
6. Django에서 제공하는 사용자 기능 처음부터 createsuperuser로 admin 페이지에 접근할 수 있는것은 Django 자체에서 'User모델'과 '로그인/로그아웃'을 제공하기 때문이다. 1. auth_user(기본 제공) vs my_user(커스텀) 기본 제공 모델이랑 커스텀 모델이랑 차이가 나는것이 보인다. 그래서 기본 제공 모델을 상속 받아서 커스텀 모델을 만들고자 한다. 2. 커스텀 User모델 수정하기 #user/models.py from django.db import models from django.contrib.auth.models import AbstractUser #Django의 유저 생성 모델을 임포트한다 class UserModel(AbstractUser): #임포트 받은 기본 유저 모델을 상속하고 class .. 2022. 5. 27.
5. Django 사용자 관리와 로그인 1. 페이지 만들기 우선 파일 구성을 한다. 그리고 만드는데 Django가 재밌는건 다른 html파일을 연장 시킬수 있다. {% extends 'base.html' %} 해당 코드를 적용시키면 base.html을 sigin, signup에 적용시킬 수 있다. 물론 파일마다 적용해야 한다. 우선 user app 내부에서 user/views.py, user/urls.py을 통해 연결을 한다. #views.py from django.shortcuts import render # Create your views here. def sign_up_view(request): return render(request, 'user/signup.html') def sign_in_view(request): return ren.. 2022. 5. 26.
α. 기타 Django 상황들(VsCode, 오류 등) 1. django-admin command not found 100프로의 확률로 Django가 깔려있지 않아서 생기는 현상이다. 여기서는 bubble 이라는 개념을 알아야한다. 가상환경은 하나의 폴더 안에 생기는 것이다. 즉, a라는 폴더 가상환경에 Django를 설치하면 b라는 폴더 가상환경에는 Django는 없는것이다. 이때 하나의 가상환경을 bubble(shell)이라 말한다. Pycharm이 좋은것은 애시당초 가상환경을 만들고 Django가 깔린 상태로 해준다는 것. 만약, vs를 사용한다면 가상환경을 만들고 Django를 직접 깔아줘야한다. For VsCode 설정한지 꽤 오래되서 기억이 가물가물한데 우선 pipenv를 깔아준다. 따라서 오류가 있을수 있으니 참고용으로만 해주길 바란다. 추후에 .. 2022. 5. 26.
4. Django admin 1. admin? admin은 Django에서 제공하는 기본 기능이다. url에 /admin을 하면 접속이 가능하다. admin 페이지에서는 데이터베이스의 데이터를 수정할 수 있고, 넣을 수도 있고, 삭제할 수도 있다. 2. superuser Django에서 제공하는 것으로 admin 페이지 접근을 도와준다. 터미널에서 python manage.py createsuperuser 회원가입 하듯이 적으면 되는데 Username은 빈칸으로 두면 user로 생성이 된다. Username (leave blank to use 'user'): Email address: a@naver.com Password: Password (again): Error: Your passwords didn't match. Passwor.. 2022. 5. 26.