본문 바로가기
카테고리 없음

[Django] -(1) 개발환경 구성, pyburger 프로젝트

by 16비트 2023. 5. 27.

파이썬 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요청으로 검색 결과가 나온다

 

 

댓글