1. 간략한 구조
웹에서의 event (url 클릭, 데이터 수신 등) -> request형태로 서버에 들어옴
url despatcher가 url을 분석 -> view로 보냄
view -> 데이터를 어떻게 다룰건지, 어떤 데이터베이스로 접근할 것인지를 model에게 넘겨줌
model -> db와 함께 이를 처리 후 model로 다시 넘김-> 다시 view로 넘김
view -> template으로 이를 넘겨주고, html페이지를 통해서 시각화됨
2. Project/ App
-project와 app
project는 하나의 웹사이트라고 생각
각각의 project 안에 function 존재, 기능들을 하는 app들이 존재
django-admin startproject 프로젝트이름
python manage.py startapp 앱이름
3. setting
-1 가장 상단의 폴더
- settings.py에 INSTALLED_APPS=[] 형태로 추가한 app들을 꼭 넣어줄것!
- urls.py에 path('jstagram/', include('jstagram.urls')),로 세팅해서, jstagram이라는 앱 뒤에 오는 url 주소들은 jstagram의 urls.py에서 다룰 수 있게 나눠준다
- path('',RedirectView.as_view(url='/jstagram/'), name='root'),
-> 메인 페이지 접속하면 바로 jstagram으로 이동하게 해줌
-2 각자의 앱 폴더
- admin.py
관리자 페이지
- apps.py
AppConfig를 통해 앱의 이름 지정
-forms.py
사용자가 보내는 데이터를 통과시켜주는 매개체
- models.py
python manage.py makemigrations 앱이름
python manage.py migrate 앱이름
해야 서버에 반영됨
Post, Comment, Tag 등을 설계할 때 사용
Foreginkey, Field 등을 설계 가능
ex)
class Post(models.Model):
author=models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
message=models.TextField(
validators=[MinLengthValidator(10)]
#최소 10글자 입력
)
photo=models.ImageField(blank=True, upload_to='jstagram/post/%Y/%m/%d')
#db에 photo를 만듦/ upload_to에 문자열, 함수 가능
is_public=models.BooleanField(default=False, verbose_name='공개 여부')
created_at=models.DateTimeField(auto_now_add=True)
updated_at=models.DateTimeField(auto_now=True)
- urls.py
ex) urlpatterns=[path('<int:pk>/delete/', views.post_delete, name='post_delete'),]
url 주소를 직접 설계
- views.py
함수 기반 뷰(def), class 기반 뷰 모두 사용 가능
데이터를 작성된 로직에 따라 처리하고, 필요한 모델을 불러와서 html로 보냄
4. templates
layout.html로 기본적인 틀과 형태, 디자인을 구성해놓고
{% extends 'jstagram/layout.html' %}
{% block content %}
안에 html 태그를 작성
{% endblock %}
5. 작업 flow
models를 기준으로,
views.py에서 로직을 구현하고,
urls.py에서 urlpatterns을 통해 주소를 지정해주고 html 파일로 연결해주고,
templates에서 html 만들자
'웹' 카테고리의 다른 글
[Migration admin.0001_initial is applied before its dependency accounts.0001_initial on database 'default'.][장고 오류해결] (0) | 2022.05.04 |
---|---|
[no such table: auth_user 오류 해결][장고] (0) | 2022.05.04 |
[TemplateDoesNotExists 에러][장고] (1) | 2022.04.17 |
[ngrok fialed to complete tunnel connection][오류 해결] (0) | 2022.04.14 |
중간점검/ 계획 (0) | 2022.03.30 |