# django
#GET
지정된 리소스에서 데이터를 요청함
GET과 POST는 둘다 근본적으로 html request 메서드 이지만
GET은 데이터를 요청해서 받아오고
POST는 데이터를 서버에 보낸다.
라고 이해하면 되겠다.
#POST
리소스를 생성하거나 업데이트를 하기 위해 서버에 데이터를 보내도록 요청함.
# django form으로 제작 루틴
#1
vscode상의 터미널에서
내가 작업하고자 하는 폴더로 이동
#2
터미널에 명령문을 입력한다.
django-admin startproject mysite
#3
생성된 프로젝트 폴더로
터미널 상에서 이동해준다.
#4
어플리케이션 생성
python manage.py startapp 어플리케이션이름
예시
python manage.py startapp cars
#5
4번의 어플리케이션으로 생성된 폴더 안에
templates라는 이름의 폴더를 만들고
templates라는 폴더 안에는 cars라는 폴더를 만든다.
그리고 그 안에는
thank_you.html
rental_review.html
이라는 이름의 파일을 넣는다.
#6
4번에서 생성된 어플리케이션 안에
views.py라는 파일을 열자.
from django.shortcuts import render
# Create your views here.
def rental_review(request):
return render(request, 'cars/rental_review.html')
def thank_you(request):
return render(request, 'cars/thank_you.html')
라는 내용의 코드를 넣자.
#7
4번에서 생성된 어플리케이션 안에
urls.py라는 파일을 만든다.
from django.urls import path
from . import views
app_name = 'cars'
urlpatterns = [
path('rental_review/', views.rental_review, name ='rental_review'),
path('thank_you/', views.thank_you, name ='thank_you')
]
라는 내용의 파일을 넣는다
#8
이제 7번에서 생성한 어플리케이션 단위의 urls.py와
프로젝트 단위의 urls.py를 연결해주어야 한다.
mysite > mysite > urls.py
로 이동한다.
"""mysite URL Configuration
The `urlpatterns` list routes URLs to views. For more information please see:
https://docs.djangoproject.com/en/4.1/topics/http/urls/
Examples:
Function views
1. Add an import: from my_app import views
2. Add a URL to urlpatterns: path('', views.home, name='home')
Class-based views
1. Add an import: from other_app.views import Home
2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
Including another URLconf
1. Import the include() function: from django.urls import include, path
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path, include
# domain.com/cars/thank_you
urlpatterns = [
path("admin/", admin.site.urls),
path(‘cars/', include('cars.urls'))
]
이 코드로 씌워준다.
#9
mysite > mysite > settings.py
경로로 온다.
어플리케이션의 apps.py에 설정되어있는 클래스를
settings.py의 INSTALLED_APPS로 추가시켜준다.
INSTALLED_APPS = [
'cars.apps.CarsConfig',
"django.contrib.admin",
"django.contrib.auth",
"django.contrib.contenttypes",
"django.contrib.sessions",
"django.contrib.messages",
"django.contrib.staticfiles",
]
#10
5번에서 만들었던
rental_review.html
안에
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>rental_review.html</title>
</head>
<body>
<h1>Thank you</h1>
</body>
</html>
라는 코드를 심어준다.
#11
터미널로 서버실행해준다.
python manage.py runserver
127.0.0.1.8000/cars/thank_you
라는 페이지에 접속이 되면 된거고
접속이 안되면 보통은 문법에러 등일것이다.
#12
어플리케이션인 cars안에 forms.py라는 파일을 만들어준다.
from django import forms
class ReviewForm(forms.Form):
first_name = forms.CharField(label = 'First Name', max_length=100)
last_name = forms.CharField(label = 'Last Name', max_length=100)
email = forms.EmailField(label = 'Email')
review = form.CharField(label = 'Please write your review here')
그 안에 이 코드를 입력해준다.
#13
다시
mysite > cars > views.py
로 이동
from django.shortcuts import render, redirect
from django.urls import reverse
from .forms import ReviewForm
# Create your views here.
def rental_review(request):
# POST REQUEST --> form contents --> thank_you
if request.method == 'POST':
form = ReviewForm(request.POST)
if form.is_valid():
#{'first_name':'Jose', }
print(form.cleaned_data)
return redirect(reverse('cars:thank_you'))
# ELSE, RENDER Form
else:
form = ReviewForm()
return render(request, 'cars/rental_review.html', context = {'form':form})
def thank_you(request):
return render(request, 'cars/thank_you.html')
라고 코드를 심는다.
#14
mysite > cars > templates > cars > rentel_review.html
으로 이동
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>rental_review.html</title>
</head>
<body>
<h1>Rental review form</h1>
<form method="POST">
{% csrf_token %}
{{form}}
<input type='submit'>
</form>
</body>
</html>
라고 코드 작성
#15
mysite > cars > urls.py
코드가 다르다면
from django.urls import path
from . import views
app_name = 'cars'
urlpatterns = [
path('rental_review/', views.rental_review, name ='rental_review'),
path('thank_you/', views.thank_you, name ='thank_you')
]
이렇게 해주고
#16
mysite > mysite > urls.py
도 코드가 다르다면
"""mysite URL Configuration
The `urlpatterns` list routes URLs to views. For more information please see:
https://docs.djangoproject.com/en/4.1/topics/http/urls/
Examples:
Function views
1. Add an import: from my_app import views
2. Add a URL to urlpatterns: path('', views.home, name='home')
Class-based views
1. Add an import: from other_app.views import Home
2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
Including another URLconf
1. Import the include() function: from django.urls import include, path
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path, include
# domain.com/cars/thank_you
urlpatterns = [
path("admin/", admin.site.urls),
path('cars/', include('cars.urls'))
]
이렇게 해주자.
#17
결과적으로
vscode터미널을 이용해서 python manage.py runserver
로 접속 후에
http://127.0.0.1:8000/cars/rental_review/
에 접속되면 정상접속이다.
중간에 너무 왔다갔다를 심하게해서
과정을 적진 못했고 코드를 전체적으로 가져왔다.
'개발일지 > Django' 카테고리의 다른 글
Django - 위젯과 스타일링 (0) | 2022.10.01 |
---|---|
Django - form 탬플릿 랜더링 (0) | 2022.10.01 |
Django - admin superuser생성 및 기본 다루기 (0) | 2022.10.01 |
Django - 기본사이클 - 모델과 웹사이트2 (1) | 2022.09.30 |
Django - 기본사이클 - 모델과 웹사이트1 (1) | 2022.09.30 |