2-2 장고 숙제 해설

kst5137·2022년 1월 12일

문제
새로운 프로젝트 생성
장고 프로젝트로 만들기
앱 하나 추가
URL 3개 추가
함수 3개 추가
GET방식으로 숫자 2개를 전달받고
두 수의 곱을 출력 후 func1.html을 보내주는 함수

func2.html을 보내주는 함수
func2.html에는 서버에게 숫자 2개를
전달하는 form 태그 작성

POST방식으로 숫자 2개를 전달 받고
두 수의 곱을 출력 후 func3.html을 보내주는 함수

  1. pip install django 입력
  2. django-admin startproject config . 입력
    config라는 폴더가 생성됨
  3. python manage.py runserver 입력
    http://127.0.0.1:8000/ 로 접속

templates 폴더를 만들고 그안에 html파일 3개를 만든다

func1.html을 보내주는 함수 3개를 만들어야 하는데 각 func은 해당하는 html과 연결

urls.py 에서 path에서 path('url아무거나',test.views.func1) 같은 형태로 url과 views의 함수들을 연결

페이지에 잘 나오는지 확인

이제 함수 나머지 부분 추가

func1은 GET방식으로 숫자 두개를 받아오기 때문에

def func1(abcde) :


    var1 = abcde.GET.get('var1',None)   
    var2 = abcde.GET.get('var2', None)

    print(int(var1) * int(var2))

    return render(abcde, 'q01/func1.html')

이런형태로 만든다

get은 메쏘드이다 왜냐하면
get('num1') 도 되고 get('num2', 0) 됨
즉 유연하게 할 수 있기때문에 메쏘드 오버로딩이기 때문임
GET은 객체
즉 GET이라는 객체 안에 get이라는 메소드가 있는것

func2는

def func2(abcde) :
    return render(abcde, 'q01/func2.html')

이게 끝이고 html을 작성해야함

func2.html로 가서
form태그를 만든다

<form method="post" action="/q01/func3">
	{% csrf_token %}
	<input type="text" name="var1">
	<input type="text" name="var2">
	<input type="submit">
</form>

method 에는 겟 or post인데 여기서는 post에 해당 그후 action은 어떤 url로 이동할지 말하고 그안에 input값과 submit을 만든다.
폼이 장고의 보안에 어긋나지 않기 위해 {% csrf_token %}를 form안에 작성
submit을 누르면 우리가 얻은 input값이 action에 적은 url로 이동

func3
숫자를 전달 받는 코드를 작성

def func3(abcde) :

    var1 = abcde.POST.get("var1", None)
    var2 = abcde.POST.get("var2", None)

    print(var1)
    print(var2)
    print(int(var1) * int(var2))



    return render(abcde, 'q01/func3.html')

이렇게 하면 끝

profile
공부중인 학생

0개의 댓글