https://www.inflearn.com/course/%EC%9E%A5%EA%B3%A0-%ED%95%80%ED%84%B0%EB%A0%88%EC%8A%A4%ED%8A%B8
강의 듣는 중...
html에서 {% extends %} 와 {% include %}의 차이
extends : template을 바탕으로 양식을 채움
include : 블록을 만들어서 갖다 붙임
manage.py
- python manage.py collectstatics
- 모든 static들을 static root로 모아줌
- Q. static????
- python manage.py makemigrations
- models.py에 쓰는 내용을 db와 연동(migrate)시킬 python파일로 만들어줌
css 적용 우선순위
- inline
- <style>
- import
function based view & class based view ( CRUD )
django의 view에는 class based view와 function based view가 있다.
django는 CRUD생산성이 높은 것으로 유명하다.
class based view로 미리 작성된 CRUD가 존재하기 때문이다.
우리는 createView등을 상속받고 필요한 부분만 작업해주면 된다.
이미 최적화되어있는 코드가 있기 때문에
복잡도, 시간이 낮아지고
생산성, 가독성 높아진다.
function based view는 이러한 형태로 만든다.
def hello_world(request):
if request.method == "POST":
temp = request.POST.get("hello_world_input")
# db, model HelloWorld
new_hello_world = HelloWorld()
new_hello_world.text = temp
new_hello_world.save()
return HttpResponseRedirect(reverse('accountapp:hello_world'))
else :
hello_world_list = HelloWorld.objects.all()
return render(request, 'accountapp/hello_world.html', context={'hello_world_list':hello_world_list})
class based view는 이런 형태로 만든다. function based view에 비해 코드가 훨씬 줄어든다.
class AccountCreateView(CreateView):
model = User
form_class = UserCreationForm
success_url = reverse_lazy('accountapp:hello_world')
template_name = 'accountapp/create.html'
class에 몇가지만 선언해주면 바로 view가 만들어진다. form을 선언해주었기때문에 {{ from }}만 입력해주면 아래와 같은 form이 보인다.
{% extends 'base.html' %}
{% load bootstrap4 %}
{% block content %}
<div style="text-align:center; max-width: 500px; margin:4rem auto;">
<div>
<h4>Login</h4>
</div>
<div>
<form action="" method="post">
{% csrf_token %}
<!-- {{ form }}-->
{% bootstrap_form form %}
<input type="submit" class="btn btn-primary">
</form>
</div>
</div>
{% endblock %}
class based view
reverse & reverse_lazy
reverse_lazy : python에서 함수와 클래스를 부르는 방식 차이 때문에 reverse를 클래스에서 사용할 수 없다. 따라서 reverse_lazy를 사용한다.
url
Class로 view를 만들면 URL 설정할때 AccountCreteView.as_view()를 써줘야 한다.
path('login/', LoginView.as_view(template_name='accountapp/login.html'), name='login'),
post
form을 post방식으로 보내주려면 {% csrf_token %}을 입력해줘야한다.
LoginView
login하면 자동으로 /profile로 간다. (default로 설정되어있다. logout도 마찬가지)
-> next 하면 로그인성공하면 next로 감
- next값이 없으면 여전히 default로 감
-> next값이 없어도 redirect할 수 있도록 settings에 LOGIN_REDIRECT_URL설정해줌
'Web' 카테고리의 다른 글
[WEB] 페이지 스크롤 이동, 페이지 위치 이동시키기 (0) | 2021.11.19 |
---|---|
WAS와 WebServer (0) | 2021.09.03 |
npx와 npm (0) | 2021.08.18 |
reference는 해당 언어로 정리되어있다 (0) | 2021.08.10 |
php에 database연동하기 (0) | 2021.08.10 |