728x90
반응형

오늘 한 일

  • 집중력이 떨어져 완강 못한 거북이 장고 이어서 들었다.

HTTP url의 설계


  • 안 좋은 설계→ url에 create, update, delete 등의 단어 有
  • /read-member-list /read-member-by-id /create-member /update-member /delete-member
  • 좋은 설계→ 동일한 url을 써주고 method로 분류해주는 게 Good!
  • 회원 목록 조회 /members 회원 조희 /memers/{id} 회원 등록 /members/{id} 회원 수정 /members/{id} 회원 삭제 /members/{id}

HTML Form


개념

  • HTML Form 태그 : 사용자로부터 할당된 데이터를 서버로 전송하는 역할을 하는 태그
  • 텍스트 필드, 체크박스, 라디오 버튼, 제출 버튼 등과 같이 사용자 정보를 입력할 수 있다.
  • 특히 action과 method 두 가지 속성이 중요하다.
    • action : 어떤 페이지로 이동할 것인지를 결정한다. 즉 이동할 url의 정보!
    • method : GET / POST 등의 방식을 결정한다.
  • 앞서 언급했듯, url을 설계할 때 동일한 url을 써주고 method로 분류해주는 게 좋은데, form태그는 사용할 수 있는 method가 GET과 POST밖에 없기 때문에 RESTful하진 않지만 일단 안 좋은 설계 방식으로 해도 무방. 다만 나중에 DRF란 걸 배우게 되면 좋은 설계 방식으로 url을 짜야 한다.

Request & Response

  • 매개변수 자리에 request : 요청 간에 모든 정보를 담고 있는 변수. 페이지가 요청되면 Django는 요청에 대한 메타 데이터를 포함하고 있는 HTTP request란 객체를 만들고 나서, 적절한 view 함수를 로드하고 HTTP request를 view 함수의 첫번째 인자로 전달해 준다. 그리고 각 view는 return할 때 HTTP response 객체를 반환해준다.
  • 즉 request를 받아서 그걸 바탕으로 response를 작성해 보내주는 과정

app별 urls.py ⇒ include()


  1. python3 manage.py startapp <앱이름> : 새로운 앱을 추가해준다.
  2. settings.py 파일에서 INSTALLED_APP 부분에 새로 생성한 앱을 추가해준다.
  3. from django.urls import path, include : 시작 프로젝트 폴더의 urls.py에서 path와 더불어 include를 추가적으로 import 해온다.
  4. path(’앱이름/’, include(’앱이름.urls’)) : 각 앱에 대한 경로를 urlpatterns에 추가해준다.
  5. 해당 앱에 ulrs.py 파일을 만들어 개별적으로 url을 관리해준다.
  6. from django.urls import path : 해당 앱의 ulrs.py 파일에 경로 설정을 위해 path를 import 한다.
  7. from <앱 이름> import views : 해당 앱의 ulrs.py 파일에 함수를 import하기 위해 같은 위치에 있는 views.py를 import 한다.

<aside> 💡 흐름 : 전체 urls에서 한 번 주소 조회 > 그 주소에 해당하는 앱의 주소 조회 최종 주소 형태 : /앱이름/해당 앱의 urls.py 파일에서 설정한 주소

</aside>

URL namespace


  • url을 작성해줄 때 ,name=’지정해 줄 이름’을 추가해준다.
    • ex) path('index/', views.index, name='index'),
  • url의 name을 설정하고 장고 템플릿 언어로 html에서 해당 name을 명시해주면 name에 해당하는 주소를 찾아 보내준다.
  • 이렇게 사용해주면 나중에 url이 바뀌는 일이 있어도 url의 name 자체는 바뀌지 않기 때문에 매번 코드를 수정하는 걸 방지할 수 있다.
#articles/urls.py
from django.urls import path
from articles import views

urlpatterns = [
    path('review/', views.review ,name='review'),
    path('create_review/', views.create_review ,name='create_review'),
]

#articles/templates/review.html
~~<form action="/create_review/" method="POST">~~
<form action="{% url 'create_reveiw' %}" method="POST">
  • 앱의 urls.py에서 앱의 이름도 따로 지정해줄 수 있는데, 이를 통해 index와 같이 각 앱마다 동일한 이름으로 작성되는 url을 구분해 줄 수 있다. → {% url ‘앱이름:겹치는 url 이름’ %}
#articles/urls.py
from django.urls import path
from articles import views

**app_name = 'articles'**
urlpatterns = [
    path('review/', views.review ,name='review'),
    path('create_review/', views.create_review ,name='create_review'),
]

#articles/templates/review.html
<form action="{% url '**articles:**create_reveiw' %}" method="POST">

DB


  • SQL
    • 데이터베이스 : 컴퓨터에 체계적으로 저장한 데이터
    • sql : 데이터베이스 액세스 및 조작을 위한 표준 언어
    • 장고 패키지를 설치하면 sqlite가 같이 설치되기 때문에 sqlite3 test라고 입력시 sql문을 시험해볼 수 있다.
  • query
    • A query is a request for data or information from a database table or combination of tables.
    • 데이터를 조회하기 위한 명령어
    • 쿼리를 db에 요청하면 응답 데이터로 query set이라는 웹 데이터로 돌아온다.
  • db의 기본 구조
    • schema : a collection of database objects associated with a database, 엑셀의 열에 해당하는 부분
    • field : a data structure for a single piece of data. Fields are organized into records, which contain all the information within the table relevant to a specific entity. For example, in a table called customer contact information, telephone number would likely be a field in a row that would also contain other fields such as street address and city. The records make up the table rows and the fields make up the columns.
    • record : a piece of stored (or collected) data
반응형

'Programming > TIL and WIL' 카테고리의 다른 글

221011 Today I Learned (TIL)  (0) 2022.10.11
221010 Weekly I Learned (WIL)  (0) 2022.10.11
221006 TIL - 프로젝트 피드백 및 팀 회고  (2) 2022.10.07
221005 Today I Learned (TIL)  (0) 2022.10.07
221004 Today I Learned (TIL)  (0) 2022.10.07

+ Recent posts