파이썬 3.11 설치
import sys
print(sys.version)
print("Hello, Wolrd!")
터미널 설정 - 보안 설정 변경
pycharm 재시작
pyburger 프로젝트
장고 설치
장고 프로젝트 생성
> django-admin startproject config .
> python manage.py runserver
접속테스트
View 사용하기
views.py 생성
from django.http import HttpResponse
def main(request):
return HttpResponse("안녕하세요, pyburger입니다")
urls.py 수정
from django.contrib import admin
from django.urls import path
from config.views import main
urlpatterns = [
path('admin/', admin.site.urls),
path("", main),
]
접속테스트
Template 사용하기
<!doctype html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<h1> 안녕하세요, pyburger입니다</h1>
</body>
</html>
settings.py에 경로 등록
from django.shortcuts import render
def main(request):
return render(request, "main.html")
접속테스트
Model 구성하기
app 생성
(venv) PS C:\myproject\pyburger> python manage.py startapp burgers
app 등록
models.py
from django.db import models
class Burger(models.Model):
name = models.CharField(max_length=20)
price = models.IntegerField(default=0)
calories = models.IntegerField(default=0)
(venv) PS C:\myproject\pyburger> python manage.py migrate
(venv) PS C:\myproject\pyburger> python manage.py makemigrations burgers
(venv) PS C:\myproject\pyburger> python manage.py migrate burgers
Django admin 사용하기
admin.py에 생성
from django.contrib import admin
from burgers.models import Burger
@admin.register(Burger)
class BurgerAdmin(admin.ModelAdmin):
pass
(venv) PS C:\myproject\pyburger> python manage.py createsuperuser
접속테스트
데이터 추가하기
이름 나오게 하기
항목 추가하기
Django로 데이터 보여주기
View함수에서 데이터 가져오기
from burgers.models import Burger
def burger_list(request):
burgers = Burger.objects.all()
print("전체 햄버거 목록:", burgers)
# Template으로 전달해줄 dict객체 context
context = {
"burgers": burgers, # burgers키에 burgers변수(QuerySet객체)를 전달한다
}
return render(request, "burger_list.html", context)
urls.py에 추가
buger_list.html 생성
<!doctype html>
<html lang="ko">
<body>
<h1>pyburger의 햄버거 목록입니다</h1>
{% for burger in burgers %}
<div>
{{ burger.name }}
(가격: {{ burger.price }}원,
칼로리: {{ burger.calories }}kcal)
</div>
{% endfor %}
</body>
</html>
접속테스트
Django에 GET 전송하기
views.py에 추가
def burger_search(request):
keyword = request.GET.get("keyword")
print(keyword)
burgers = Burger.objects.filter(name__icontains=keyword)
print(burgers)
context = {
"burgers": burgers,
}
return render(request, "burger_search.html", context)
urls.py에 추가
burger_search.html 생성
<!doctype html>
<html lang="ko">
<body>
<h1>pyburger의 햄버거 검색화면입니다</h1>
<h2>검색결과</h2>
{% for burger in burgers %}
<div>
{{ burger.name }}
(가격: {{ burger.price }}원,
칼로리: {{ burger.calories }}kcal)
</div>
{% endfor %}
</body>
</html>
접속테스트
Django에 form을 통한 GET 전송하기
키워드가 없으면 빈 값을 반환하도록 views.py 수정
def burger_search(request):
keyword = request.GET.get("keyword")
print(keyword)
if keyword is not None:
burgers = Burger.objects.filter(name__contains=keyword)
else:
burgers = Burger.objects.none()
print(burgers)
context = {
"burgers": burgers,
}
return render(request, "burger_search.html", context)
html 파일에 form 추가하기
접속테스트
get이 빈값이면 검색결과는 아무것도 안뜸
'더블'을 입력하고 검색 버튼을 누르면 get요청으로 검색 결과가 나온다
댓글