목록전체 글 (420)
초보 개발자
이 글은 전부 점프 투 장고의 내용을 바탕으로 작성되어졌습니다. 2-05 URL과 네임스페이스 - 점프 투 장고 (wikidocs.net) 2-05 URL과 네임스페이스 `[완성 소스]` : [github.com/pahkey/djangobook/tree/2-05](https://github.com/pahkey/djangobook/tree/2 ... wikidocs.net URL의 주소가 바뀐다면 ? {{ question.subject }} 질문 상세를 위한 URL 링크이다. 하지만 이러한 URL 링크는 웹 프로그램이 발전할 때마다 수정될 가능성이 크다. 예를 들어 http://localhost:8000/pybo/question/2 또는 http://localhost:8000/pybo/2/question ..
ManyToMany 데이터베이스의 Many-to-Many relationship(이하 다대다 관계)는 처음 접하는 사람들을 힘들게 한다. 한 테이블의 여러 레코드가 다른 테이블의 여러 레코드와 연결되어 있는 관계. 말만 들어서는 감이 오지 않으니 예를 들자면, 피자와 토핑 사이의 관계라고 할 수 있을 것이다. '피자'라는 테이블의 피자(페퍼로니피자, 치즈피자 등)는 '토핑' 테이블의 토핑(치즈, 페퍼로니, 올리브, 양파 등)을 여러 개 가질 수 있고, 그 반대도 마찬가지이다. 장고에서는 이러한 데이터들의 관계를 ManyToManyField에서 정의할 수 있다. class Pizza(models.Model): name = models.CharField(max_length=20) toppings = mode..
django-admin을 사용해서 첫 앱을 만들어보자 앱의 이름은 복수형태로 만들어주어야 한다. django-admin startapp rooms django-admin startapp lists django-admin startapp reviews django-admin startapp users django-admin startapp conversations 앱 안에 있는 이름들은 절대 변경해선 안된다. 파일명 변수명 장고는 각 정해진 파일, 변수를 지켜보고 있기 때문이다. 하지만 생성하는 것은 자유롭다. urls.py를 비롯해 몇가지 파일을 생성할 것이다. 장고에서 기본적으로 제공하는 user모델이 있는데 많은 기능을 충분히 제공하고 있지만, ( 유효성검사, 권한 등 ) 우리는 이걸 좀 더 확장해서..
auto_now , auto_now_add의 차이 #user/models.py from django.db import models # Create your models here. class UserModel(models.Model): class Meta: db_table = "my_user" username = models.CharField(max_length=20, null=False) password = models.CharField(max_length=256, null=False) bio = models.CharField(max_length=256, default='') created_at = models.DateTimeField(auto_now_add=True) updated_at = models..
우리가 만든 장고 project는 여러 애플리케이션을 포함한다. project는 app의 집합이다. 언제 어떻게 app을 만들고 어떻게 project를 계획하는지 배워보려고 한다. 먼저 에어비앤비를 들어가면 방을 고를 수 있다. 그 방의 정보를 수정, 추가, 리스트보여주기, 검색하기, 삭제, 업로드 이게 하나의 애플리케이션이다. 거기에 달린 리뷰들이 있다. 그 리뷰들도 room app에 넣으면 될까?? room을 리뷰하는 것이니까?? 그럼 리뷰생성하기, 삭제하기,수정하기 리뷰 보기 리뷰 나열하기 거기에 또 room 예약 기능이 있을 것이다. 예약 생성하기, 삭제하기 기능도 필요하다. 호스트가 예약을 승인과 취소도 할 수도 있어야 한다. 이외에도 엄청 많다. 이러한 기능을 room app에 전부 담아버리면..
db.sqlite3을 삭제해보자 , 왜냐하면 앞서 runserver를 했을 때 이 파일이 없을 때 오류가 발생했기 때문이다. 그리고 지금 그 빨간색 오류를 다시 보고싶기에 지우는 것이다. 지우고 다시 서버를 실행시켜보자 python managy.py runserver 그럼 위와같이 다시 빨간색 오류메시지가 나올 것이다. 폴더를 보면 sqlite파일이 생긴 것이 보이는데 지금은 빈 파일이다. /admin으로 들어가보면 아래와 같이 오류가 발생한 것을 확인할 수 있다. 장고에서 데이터베이스 테이블을 검색하지만 존재하지 않는다는 에러이다. (django_session 테이블) 지금은 장고와 데이터베이스가 연동되지 않았다는 뜻이다. migration이란 하나의 상태에서 다른 상태로, 다른 데이터 유형으로 바꾸는..
config 폴더안에는 __init__.py라는 파일이 있다. 현재는 비어 있지만 이 파일은 파이썬한테 필요한 것이다. 장고 관련된 파일이 아니다. 새로운 폴더를 만들 때 파이썬에서 그 폴더의 파일들을 써야 할 때는 항상 그 안에 __init__.py를 두어야 한다. 일종의 import방식이다. __init__.py가 있어야 이렇게 config.settings를 쓸 수가 있다. config 폴더가 그 안에 __init__.py를 갖고 있기 때문에 파이썬 패키지처럼 import시켜서 쓸 수 있는 것이다. 이 장고 앱을 실행시켜보자 가상환경 속에서 아래와 같이 실행시키면 python manage.py runserver 오류가 뜨긴 뜨지만 실행이 잘 된 것을 확인할 수가 있다. 위의 주소로 접속하면 아래와 같..
django document를보면 django-admin startproject mysite 이렇게 하라고 한다. 근데 이미 나는 airbnb-clone이라는 폴더를 만들고 가상환경까지 만들었는데...? 다시 지우고 저걸 실행해야하나 싶었는데 그냥 만든 폴더 안에서 이렇게 적어보자 django-admin startproject config 그럼 airbnb-clone폴더안에 이런 폴더가 하나 생성이 된다. 여기서 중요한 것은 바깥의 confing의 이름을 Aconfig로 바꾸는거다. 사실 다른이름도 상관은 없다. 왜냐하면 안에있는 config 폴더와 manage.py를 밖으로 꺼내려고 하기 때문이다. 이 두개는 이름이 같으니까 이름을 바꾸지 않으면 밖으로 꺼낼 수 가 없다. 그리고 Aconfig폴더는 지..