현재코드의 문제
# views.py
# ...
def hello_world(request):
if request.method == "POST":
temp = request.POST.get('hello_world_input')
# POST만 날아오면 아무나 DB에 접근하게 된다. -> 해결사항
new_hello_world = HelloWorld()
new_hello_world.text = temp
new_hello_world.save()
hello_world_list = HelloWorld.objects.all()
return HttpResponseRedirect(reverse('acountapp:hello_world'))
else:
hello_world_list = HelloWorld.objects.all()
return render(request, 'accountapp/hello_world.html', context={'hello_world_list': hello_world_list})
CRUD
- CRUD : C reate / R ead / U pdate / D elete -> 이 네가지가 쉽게 구현할 수 있는게 장고의 특징이다.
- 쉬운 이유는 CRUD의 각각의 View(class)를 제공해주기 때문이다.
- CBV(Class Based View)를 제공해 준다고 한다
대략 CBV의 구조는 아래와 같다
class AccountCreateView(genetric.CreateView):
model = User
form_class = AccountCreateFrom
success_url = reverse_lazy('app:list')
template_name = 'accountapp/accountapp_create.html'
뭔소린지 모르겠지만 일단. django는 CRUD이 쉽다는 장점과 그 장잠은 CBV에서 온다고 그냥 받아들이자.