_won_
wonprogrammer
_won_
전체 방문자
오늘
어제
  • 분류 전체보기
    • woncoding
      • TIL
      • WIL
    • source Code
      • Python
      • Programmers
      • BAEKJOON

블로그 메뉴

  • 방명록

티스토리

Github · Wonprogrammer
hELLO · Designed By 정상우.
_won_

wonprogrammer

TIL | 9.26.월 [Python 장고 / Django 기초🐢]
woncoding/TIL

TIL | 9.26.월 [Python 장고 / Django 기초🐢]

2022. 9. 26. 22:11

- Python Django 실무 기초

  • user model upgrade
  • database 적용
  • django 사용자 모델 적용 - 회원가입 / 로그인
  • 로그인 이후 기능 추가 및 다듬기
  • 로그아웃 기능 만들기
  • 게시글 작성 / 삭제  및  작성 시간 표기

 

 


 

 

- Python Django 기초 🐢 |  VSCode 기준

 

1. HTML Form

HTML Form이란? 사용자 입력을 위한 html양식을 만드는데 이용하는 틀

 

[form 요소]

  • 텍스트 필드
  • 체크박스
  • 라디오 버튼
  • 제출 버튼
  • 이외의 입력요소를 위한 컨테이너

+ 참고 링크

 

HTML Forms

W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.

www.w3schools.com

<form action="/action_page.php" method="POST">  👉 action속성 : 어느 페이지로 이동할건지?에 대한 정보
  <input type="text" id="fname" value="John"><br><br>
  <input type="submit" value="Submit"> 👉 입력요소를 위한 컨테이너 자동 제공 
</form>

👉 method 속성으로 GET / POST 설정 가능
👉 입력 요소 제공 후 다음 동작은 form action에서 설정한 url로 이동한다.

 

 

 

 

[Django Form]

장고에서 form 사용시 주의사항!

꼭 <form>태그 시작 시 {% csrf_token %} 적어주고 시작해야 됨 : 위조 방지

 

+ 데이터의 흐름 파악이 중요!  / {{ }} 변수의 흐름또한 중요!

 

 

 


 

 

 

2. App별 urls.py

기존의 urls.py는 Main project의 urls.py 파일에 모두 넣어 줬지만 App의 갯수가 늘어날 수록 views.py 에 있는 함수 명이 겹칠 수 있기때문에 urls.py를 분리 해주는 편이 좋다. 

 

[Main / urls.py]

  • 각 앱들에 있는 urls.py의 경로를 받기 위해 : from django.urls import path, include 를 해준다.
  • path('app이름/' , inciude('app이름.urls')) 로 app마다의 url을 포함하는 경로를 적어준다.

 

[App / urls.py] 

  • app에서 또한 Main의 urls.py의 경로를 받기 위해 : from django.urls import path, include 를 해준다.
  • urls.py를 통해 보여줄 views.py도 import 해준다 : from app이름 import views
  • urlpatters = [] 생성 후 → views.py를 통해서 보여줄 url들을 가져와 적어주면 👉 /app이름/보여줄url 로 접속이 된다

 

 

 


 

 

 

 

3. URL Namespace

URL Namespace란? 우리가 작업을 하다보면 의도치 않게 url주소가 변경되는 경우가 있는데 ( 예)  /page_1 → /first/page_1 )

이 경우에 오류가 나지 않고 알아서 바뀐 url주소로 잘 찾아갈 수 있도록 도와주는 작업이다.

 

[App / urls.py] 

path('first_page/', views.review, name='first')

해당 url주소 경로 뒤에 name=''을 붙여 선언해 준다면

 

[App / views.py]

<form action="{% url 'first' %}" method="POST">

views.py 파일 속 url경로를 url name인 first로 지정해주면, first_page에서 second_page로 url이 변경된다 해도 오류없이 second_page로 이동한다.

 

 

 

 

+ 같은 맥락으로 App / urls.py 파일에도 name을 붙여줄 수 있다.

app_name = 'url주소가 가지는 고유 이름 선언'
urlpatterns = [
	path()
    path()
]

 

대신! App / views.py 파일에서 url 이름을 변경해줘야 한다.

<form action="{% url '앞 url 주소가 가지는 고유 이름 : first' %}" method="POST">

👉 나눠진 url주소 중 '앞 url 주소가 가지는 고유 이름 : 뒤 url 주소가 가지는 고유 이름' 으로 선언 해줘야 함

 

 

 

 


 

 

 

4. Template Inheritance

 

[헤더]

사이트 상단에 고정 되어있는 바

예) tistory

[풋터]

사이트 하단에 고정 되어있는 바

예) tistory

 

👉 페이지 마다 매번 바뀌지 않고 고정으로 들어가는 속성이므로 매번 작성하지 않고 Template Inheritance를 이용해 다른 html과 같이 사용할 수 있게 해준다.

 

 

 

[Template Inheritance]

 

고정된 html : base.html

<h1>헤더 부분</h1>

<!-- 바뀌는 부분 -> 이건 dinner.html 에 extends로 넣어 줄 수 있음 -->
{% block content %} {% endblock %}  

<h1>풋터 부분 작성</h1>

👉 (전에 헤더들어가) {% block template이름 %} {% endblock %} (후에 풋터 들어가) 을 이용해 다른 html이 들어갈 영역 표시 

 

다른 html을 고정된 헤더와 풋터 사이에 넣어주고 싶을땐?

<!-- 상속을 이용해 : 페이지를 쪼개서 유용하게 사용할 수 있음 -->

{% extends 'base.html' %} {% block content %}  


	<base.html 사이에 들어갈 html >


{% endblock %}

👉 {% extends 'base.html' %} : 여기 base.html을 가지고 있는데    

       {% block content %} 전에 base.html의 헤더부분 넣을거고, {% endblock %} 후에 base.html의 풋터 부분 넣을꺼야

 

 

 


 

 

 

+ 참고 링크

 

[render | redirect]

 

[Django] render 와 redirect 의 차이

render render(request, template_name, context=None, content_type=None, status=None, using=None) render 는 다음과 같은 파라미터들을 가집니다. 이 중에서 request 와 template_name 은 필수적으로 필요합니..

ssungkang.tistory.com

 

[html : Form]

 

HTML : 폼(form) 이해

폼은 알게 모르게 웹에서 많이 사용합니다. 사용자 의견이나 정보를 알기 위해 입력할 큰 틀을 만드는 데 사용되기 때문입니다. 폼은 입력된 데이터를 한 번에 서버로 전송합니다. 전송한 데이

www.nextree.co.kr

 

'woncoding > TIL' 카테고리의 다른 글

TIL | 9.28.수 [Python 장고 / Django 기초🐢]  (0) 2022.09.28
TIL | 9.27.화 [Python 장고 / Django 기초🐢]  (0) 2022.09.27
TIL | 9.23.금 [Python 장고 / Django 기초🐢]  (0) 2022.09.23
TIL | 9.22.목 [Python 장고]  (0) 2022.09.22
TIL | 9.21.수 [자료구조와 알고리즘 / Python 복습 🐢]  (0) 2022.09.21
    'woncoding/TIL' 카테고리의 다른 글
    • TIL | 9.28.수 [Python 장고 / Django 기초🐢]
    • TIL | 9.27.화 [Python 장고 / Django 기초🐢]
    • TIL | 9.23.금 [Python 장고 / Django 기초🐢]
    • TIL | 9.22.목 [Python 장고]
    _won_
    _won_
    Coding Practice blog

    티스토리툴바