에러의 이유
1.
오타
2.
저장 안함 ... 실시간 자동저장 없다
⇒ 주의하자
안되면 구글링 안되면 멋사 선생님 질문
App
: Django 프로젝트를 이루는 작은 단위
ex) Naver
•
검색
•
메일
•
쇼핑
⇒ 요렇게 쪼개서 유지보수가 편하도록 만듦
조여정@Jnostalgia-DESKTOP-4GDFJI6 MINGW64 ~/Desktop/2021/대외 활동/제 9기
$ python -m venv djangoexercise1
조여정@Jnostalgia-DESKTOP-4GDFJI6 MINGW64 ~/Desktop/2021/대외 활동/제 9기
Installing collected packages: p/activateytz, sqlparse, asgiref, django
Successfully installed asgiref-36 MINGW64 ~/Desktop/2021/대외 활동/제 9기.3.4 django-3.2.2 pytz-2021.1 sqlparse-0.4.1
WARNING: You are using pip versinone-any.whl (7.9 MB)on 20.2.3; however, version 21.1.1 is available.
You should consider upgrading via the 'c:\users\조여정\desktop\2021\대외
활동\제 9기 멋쟁이사자처럼\3. django\django\djangoexercise1\scripts\python.exe -m pip install --upgrade pip' command.
(djangoexercise1)
조여정@Jnostalgia-DESKTOP-4GDFJI6 MINGW64 ~/Desktop/2021/대외 활동/제 9기
멋쟁이사자처럼/3. Django/django
$ django-admin. startproject project1
bash: django-admin.: command not found
(djangoexercise1)
조여정@Jnostalgia-DESKTOP-4GDFJI6 MINGW64 ~/Desktop/2021/대외 활동/제 9기
멋쟁이사자처럼/3. Django/django
$ django-admin startproject project1
(djangoexercise1)
조여정@Jnostalgia-DESKTOP-4GDFJI6 MINGW64 ~/Desktop/2021/대외 활동/제 9기
멋쟁이사자처럼/3. Django/django
$ cd project1/
(djangoexercise1)
조여정@Jnostalgia-DESKTOP-4GDFJI6 MINGW64 ~/Desktop/2021/대외 활동/제 9기
멋쟁이사자처럼/3. Django/django/project1
$ python manage.py startapp app1
Python
복사
project1/project1/settings.py 에서
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app1.apps.App1Config', ⇒ 추가 : app1(앱이름).apps. / 처음 대문자App1 처음 대문자 Config / ,
]
위의 것(' ')처럼 하고 대문자 주의, 끝날 때 , 넣기!(안하면 에러남) ... 저장하면 앱 등록 완료
웹사이트 구동 순서
1.
사용자가 서버에 요청
2.
서버의 View 는 Model 에게 요청에 필요한 데이터를 받듬
3.
View 는 받은 데이터를 적절히 처리해서 Template 로 넘김
4.
Template 는 받은 정보를 사용자에게 보여줌
—>
project1/app1에 폴더 templates 만들기
—>
그 안에 welcome.html 파일 생성
—>
필요한 코드 입력
<div style="text-align: center">
<h1>사용자의 이름을 입력해주세요</h1>
<br>
<form>
<label for="nameInput">이름 : </label>
<input id="nameInput" name="name">
<input type="submit" value="제출">
</form>
</div>
HTML
복사
—>
생략/templates/view.py 에서 뷰 만들기
def welcome(request):
return render(request, "welcome.html")
Python
복사
welcome 함수 요청시 render라는 함수로 welcome.html 을 띄워줌 / request 는 자동으로 적어주는 약속 ... render 뒤에서 자세히
—>
이번에 만들 페이지는 DB가 없어서 Model 만들 필요가 없음
—>
남은 것은 url 과 뷰 함수 연결
생략/project1/urls.py 에서 연결
from django.contrib import admin
from django.urls import path
from app1 import views ⇒ 위에랑 같은 from, app 이름, import 해서 views 가져옴
urlpatterns = [
path('admin/', admin.site.urls),
path('', views.welcome, name="welcome"), ⇒ 왜 여기서도 오류 나는지 모르겠
]
⇒ 위에랑 같은 path, '' 하고 views.welcome 하면 연결된 것
'' 은 서버를 기동시키고 처음 들어가는 페이지가 welcome 이 되게 하겠다는 의미
세번째 인자 적어주는 것이 좋음 name="welcome" welcome 이란 함수를 현재 url로 연결시키는 것 / 다른 html 파일에서 welcome 이라는 url 입력은 번거로울 수 있으니 그럴 때마다 url 대신 쓸 수 있는 것 ... welcome
실행하고 주소창에 /admin 하면 admin.site.urls 이 뷰가 실행되므로 다른 사이트 뜸
—> input박스에 넣은 이름을 페이지에 띄우게 하자
앞서 했던 것 반복하면 완성인데 앱 등록 했으니까 템플릿 만들자 → 템플릿에 hello.html 파일 생성
<div style="text-align: center">
<h1>반갑습니다! "이름"님</h1>
</div>
HTML
복사
def hello(request):
userName = request.GET["name"]
return render(request, 'hello.html', )
Python
복사
welcome 파일에서 input 박스에 넣은 이름을 가져오는데 name이 name으로 되어있으므로 가져올 값을 userName 변수에 넣음
request.GET["name"]해서 가져옴
가져온 값을 render() 함수에 넘겨줌
request 그대로, '띄울 페이지', {'userName' | userName} 입력
넘겨줄 데이터(키값)들을 딕셔너리 자료형으로 입력하면 userName 이라는 이름으로 hello.html 파일에 정보 넘어감
—> 이름 넘겨받는 방법
html에서 파이썬처럼 변수와 제어문과 같은 문법을 사용하게 해주는 템플릿 언어 사용
⇒ "이름" 대신 {{userName(키값)}} 중괄호 2개로 바꿈
path 하나 더 만들기
'' 주소 다 다르게 해야해서 hello/ 로 지정
이렇게
urlpatterns = [
path('admin/', admin.site.urls),
path('', views.welcome, name="welcome"),
path('hello/', views.hello, name="hello"), ⇒ 추가
]
—> welcome.html 파일에서 <form> 을 <form action="hello"> 로 바꿈
—> 페이지 실행
정리
1.
App 생성
2.
Template 제작
3.
View 제작
4.
URL 연결