1. Django 프로젝트에서 다양한 관리 명령을 실행할 수 있게 하는 파일은 무엇인가요?
- A) settings.py
- B) urls.py
- C) views.py
- D) manage.py
내 답안 A
>> 관리라는 단어만 보고 설정을 수정한다고 생각해버렸다. 검토를 한번 더 해봤으면 안틀렸을것같다.
2. 다음 중 Django에서 제공하는 기본적인 데이터베이스는 무엇인가요?
- A) PostgreSQL
- B) MySQL
- C) SQLite
- D) MongoDB
내 답안 C
3. Django의 QuerySet 메서드 중 데이터베이스에서 특정 조건에 맞는 모든 레코드를 반환하는 메서드는 무엇인가요?
- A) filter()
- B) get()
- C) exclude()
- D) all()
내 답안 B
>> 처음에는 filter 라고 작성했다가 get으로 고쳤다...
get은 딕셔너리의 value를 반환하는 것이라고 생각하면 단일 객체를 반환한다는 것을 쉽게 알 수 있을것같다.
4. Django 템플릿 시스템에서 변수의 값을 출력할 때 사용하는 문법은 무엇인가요?
- A) {{ 변수 }}
- B) { 변수 }
- C) {% 변수 %}
- D) [[ 변수 ]]
내 답안 A
5. 웹 어플리케이션에서 쿠키(Cookie)의 주요 목적은 무엇인가요?
- A) 사용자의 세션 데이터를 서버에 저장하기 위해
- B) 사용자의 브라우저에 데이터를 저장하여 다음 방문시 사용하기 위해
- C) 데이터베이스 쿼리를 최적화 하기 위해
- D) 사용자의 암호를 안전하게 저장하기 위해
내 답안 A
>> A와 B중에 고민하다가 A를 골랐다.
문제를 다시 읽어보니 알것같다. 쿠키는 클라이언트의 브라우저에 저장되는 것인데 문제 설명에는 서버에 저장을 한다고 적혀있었다.
6. Django에서 특정URL에 대한 요청을 처리할 뷰(View)와 연결할 때 주로 사용하는 함수는 무엇인가요?
- A) path()
- B) url()
- C) include()
- D) route()
내 답안 A
7. 다음 중 Django의 ModelForm을 사용하는 이유로 가장 적절한 것은 무엇인가요?
- A) 폼을 통해 입력된 데이터를 데이터베이스에 자동으로 저장하기 위해
- B) 유저로부터 입력된 데이터를 검증하지 않고 직접 처리하기 위해
- C) Django의 인증시스템을 우회하기 위해
- D) HTML 템플릿에서 직접 쿼리셋을 사용하기 위해
내 답안 D
>> html에서 form을 사용할 수 있다는 의미정도로 이해해서 D를 골랐었는데 내가 쿼리셋이라는 용어를 잘 몰랐던것같다.
모델폼을 사용하여 개발자는 데이터를 쉽게 모델에 저장하고 검증할 수 있게 된다.
8. Django의 MTV 패턴에서 각 요소(Model, Template, View)의 역할을 간단히 설명하세요.
내 답안
- Model: 데이터베이스를 정의
- Template: 사용자에서 보여질 html
- View: Model과 Template을 유기적으로 연결함
>> 좀 더 보충해서 설명하자면 Model 은 데이터를 관리하고 수정, 삭제, 조회하는 기능을 제공한다고 할 수 있다.
9. Django에서 settings.py 파일의 주요 역할을 구체적인 예시를 들어 설명하세요.
내 답안
시스템을 설정하는 역할을 한다. app폴더를 사용할 수 있도록 등록하거나 개발에 도움을 주는 여러 모듈들을 설정할 수 있다. 그외에도 개발자가 사용할 유저모델을 지정하거나 templates 등 각종 폴더의 위치를 설정할 수 있다.
10. Django ORM이란 무엇이며, 왜 사용하는지 설명하세요.
내 답안
데이터베이스를 운용하기 위해서는 SQL을 사용해야하는데 Django ORM을 사용하여 비교적 직관적으로 데이터베이스에 접근할 수 있다.
>> 추가적으로 Python 코드만으로 데이터베이스와 상호작용할 수 있다는 내용이 들어가 있으면 좋을것같다.
11. Django의 Custom UserModel을 사용하는 이유와 장점을 설명하세요.
내 답안
개발자의 의도대로 상황에 맞는 model을 사용할 수 있다. 기존의 User 모델에 새로운 필드를 추가하거나 기능을 정의할 수 있으므로 개발의 유연성이 높아진다.
12. Django에서 Model 클래스는 데이터베이스 테이블과 매핑됩니다. Django ORM에서 모델을 정의할 때 필드를 정의할 수 있는 다양한 옵션 중 ManyToManyField에 대해 구체적인 사용 사례를 들어 설명하세요.
내 답안
ManyToManyField는 데이터베이스의 N:M 연결관계를 정의한다. 예를들어서 인스타그램의 사용자는 여러 유저를 팔로우할 수 있으며 동시에 여러 유저들이 사용자를 팔로우할 수도 있다.
>> 내용 자체는 맞았지만 테이블간의 중간테이블을 생성한다는 내용이 추가되어 있으면 좋을것같다.
13. Django 모델을 작성하세요. "BlogPost"라는 이름의 모델을 만들고, 제목(title), 내용(content), 작성일(created_at), 수정일(updated_at) 필드를 추가하세요.
내 답안
class BlogPost(models.Model):
title = models.CharField()
content = models.TextField()
created_at = models.DateField(auto_now_add=True)
updated_at = models.DateField(auto_now=True)
>> title 필드의 글자 수는 지정하라는 내용이 없어서 따로 지정하지 않았다.
14. Django에서 사용자가 로그인할 수 있는 간단한 로그인 뷰를 작성하세요.
내 답안
from django.shortcuts import render, redirect
from django.contrib.auth import authenticate, login
def login_view(request):
if request.method == 'POST':
username = request.POST['username']
password = request.POST['password']
user = authenticate(request, username=username, password=password)
if user is not None:
login(request, user)
return redirect('home')
else:
message = '아이디/비밀번호를 확인해주세요.'
return render(request, 'login.html', {'message': message})
return render(request, 'login.html')
>> message 를 따로 생성해서 넘겨주면 된다고 생각했었는데 message.error를 사용하는 더 간단한 방법도 있었다.
근데 아무튼 작동은 되지 않을까? 실행은 안해봤지만...
15. 다음의 Post에 대해 CRUD를 하는 코드의 일부입니다. 아래 내용을 참고하여 코드를 완성해 주세요.
1) Read
내 답안
from .models from Post
def post_list(request):
posts = Post.objects.all()
context = {'posts': posts}
return render(request, 'posts/index.html', context)
>> 이제 보니까 Read에만 context에 담아서 넘겨줬고 나머지는 그냥 넘겨줬네
2) Create
내 답안
from .forms from PostForm
def post_create(request):
if request.method == 'POST':
form = PostForm(request.POST)
if form.is_valid():
form.save()
return redirect('post_list')
else:
form = PostForm()
return render(request, 'posts/form.html')
3) Update
내 답안
from .models from Post
from .forms from PostForm
def post_update(request, post_id):
post = POST.objects.get(pk=post_id)
if request.method == 'POST':
form = PostForm(request.POST, instance=post)
if form.is_valid():
form.save()
return redirect('post_list')
else:
form = PostForm(instance=post)
return render(request, 'posts/form.html', {'form': form})
4) Delete
내 답안
from .models from Post
def post_delete(request, post_id):
post = POST.objects.get(pk=post_id)
if request.user.is_authenticated:
post.delete()
return redirect('post_list')
return render(request, 'posts/confirm_delete.html', {'post': post})
>> 다시 생각해보니까 참 어이가 없었던 문제, if 부분에 뭘 적어야할지 고민했었는데 시험이 끝나자마자 다시 생각해보니 그냥 단순하게 POST 요청만 처리하면 되는 것이었다. 왜 괜히 복잡하게 생각해서...
아니면 POST만 처리하도록 데코레이터라도 설정해둘걸 그랬다.
주관식과 코드작성문제는 대부분 맞았다고 생각한다. 조금 놀랐던 점은 객관식을 4문제나 틀렸다는 것이다. 전부 어려운 문제는 아니라고 생각했었는데 내가 정확하게 알지 못해서 헷갈려서 틀린 경우가 상당했다.
다행이 전혀 모르는 부분들은 아니기 때문에 다시 한번 이론을 정리해보면 좋을것같다.
'내일배움캠프' 카테고리의 다른 글
Django 커스텀 User model 사용하기 (0) | 2024.09.05 |
---|---|
DRF로 회원가입 기능 구현하기 (0) | 2024.09.04 |
외워야 하는것? 외우지 않아도 되는것? (1) | 2024.09.02 |
Django기초주차 - 마무리 (0) | 2024.08.28 |
DJango 기초 - 마무리 (0) | 2024.08.26 |