본문 바로가기

기타/django25

작정하고 장고 - UpdateView, DeleteView UpdateView를 이용한 비밀번호 변경 구현 먼저 views.py에 UpdateView를 만들어준다. class AccountUpdateView(UpdateView): model = User form_class = AccountUpdateForm success_url = reverse_lazy('accountapp:hello_world') template_name = 'accountapp/Update.html' 여기서 form_class에 UserCreationForm를 사용해도 되지만 UserCreationForm를 사용할 경우 아이디도 변경이 가능해져서 아이디 변경을 막기 위해 AccountUpdateForm을 새로 만들어준다. class AccountUpdateForm(UserCreationFo.. 2023. 5. 13.
작정하고 장고 - DetailView를 활용한 개인 페이지 구현 DetailView를 활용한 개인 페이지 구현 class AccountDetailView(DetailView): model = User context_object_name = 'target_user' template_name = 'accountapp/detail.html' Detail View를 만들어준다.(read) path('detail/', AccountDetailView.as_view(), name='detail') accountapp의 urls.py에 해당 path를 추가해준다 여기서 pk는 기본키를 의미한다. {% extends 'base.html' %} {% block content %} {{ target_user.date_joined }} {{ target_user.username }} {.. 2023. 5. 11.
작정하고 장고 - Bootstrap을 이용한 Form 디자인 정리 Bootstrap을 이용한 Form 디자인 정리 django-bootstrap4를 설치한다 settings.py에 추가해준다. login.html에서 {% extends 'base.html' %} {% load bootstrap4 %} {% block content %} Login {% csrf_token %} {% bootstrap_form form %} {% endblock %} 상단에 {% load bootstrap4 %}를 추가해주고, form 대신 {% bootstrap_form form %}로 변경해준다. bootstrap이 적용된 form을 볼 수 있다. style을 살짝 추가해주었다. {% extends 'base.html' %} {% load bootstrap4 %} {% block co.. 2023. 5. 10.
작정하고 장고 - login, logout 구현 22강 : login & logout 구현 accountapp urls.py path('login/', LoginView.as_view(template_name='accountapp/login.html'), name='login'), path('logout/', LogoutView.as_view(), name='logout'), accountapp urls.py에 login, logout을 추가해준다. {% extends 'base.html' %} {% block content %} Login {% csrf_token %} {{ form }} {% endblock %} login.html을 만들어준다. 하지만 로그인을 하면 오류가 발생한다. login, logout view에서 redirect하는 매커니.. 2023. 5. 9.
작정하고 장고 - CreateView를 통한 회원가입 구현 21강 views.py 클래스형 view로 다음과 같이 코드를 작성해준다. class AccountCreateView(CreateView): model = User form_class = UserCreationForm success_url = reverse_lazy('accountapp:hello_world') template_name = 'accountapp/create.html' 함수형 view에서는 다음과 같이reverse('accountapp:hello_world')) reverse를 사용하지만 클래스형 view에서는 reverse_lazy('accountapp/hello_world.html') 처럼 reverse_lazy를 사용한다. 이후 accountapp./urls.py에 path('crea.. 2023. 5. 8.
작정하고 장고 - for 루프, 디버깅 18강 - DB 정보 접근 및 장고 템플릿 내 for loop views.py def hello_world(request): if request.method == "POST": temp = request.POST.get('hello_world_input') 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', conte.. 2023. 4. 11.
작정하고 장고 - GET, POST 16강 : GET, POST 프로토콜 실습 form 태그 hello_world.html에 form 태그를 추가해준다. {% extends 'base.html' %} {% block content %} Testing {% csrf_token %} {{ text }} {% endblock %} 위 코드에서 form 태그 내부에 POST 타입의 input 태그를 만들어준다. 이때 {% csrf_token %} 를 추가해줘야 하는데 해당 구문은 장고를 이용해서 POST method를 사용해서 서버에 요청을 보낼때 항상 form 안에 명시해줘야한다. (보안기능중 하나이다.) 해당 구문을 추가하지 않으면 다음과 같이 오류가 발생한다. veiws.py from django.http import HttpResponse.. 2023. 4. 10.
작정하고 장고 - models.py, db 연동 14강 - Model, DB 연동 - makemigrations, migrate model 장고에서 model이란, database가 장고 내부에서 사용이 편하도록 연동시켜주는것 models.py models.py에 class helloWorld(models.Model): text = models.CharField(max_length=255, null=False) 해당 클래스를 만들고 python manage.py makemigtations 명령어를 실행한다. (models.py에 쓰는 내용을 DB와 연동시킬 파이썬 파일로 만들어주는 명령어) initial.py 파일이 생긴것을 확인할수있다. 연동시키기 python manage.py migrate 명령어를 통해 initial.py를 적용시켜준다. 15강 .. 2023. 4. 7.
작정하고 장고 - css display 속성, size 단위 12강 - CSS 핵심 - display 속성 및 Size 단위 px, em, rem, % display 속성 block 모든 태그에는 부모가 존재하는데 부모의 모든 너비를 가져가고 블록형태를 가지는 태그 inline 글씨의 높이 만큼 한줄내에 일정 부분만 들어가는 속성을 가진 태그 inline-block 블록이지만 인라인이다(오른쪽으로 쌓임) none 태그는 존재하지만 브라우저에 보이지 않는데 아래와 같이 적용된다 ↓ visibility-hidden hidden과 none의 차이 size px 부모 태그에 상관없이 고정된값 em 부모의 값이 2배가 증가하면 자신의 값도 같이 2배 증가한다. 하지만 부모가 2배증가되고 부모의 부모도 2배가 증가하면 4배 증가된다. -> 관리에 어려움이 있음 rem roo.. 2023. 4. 6.