우선. 장고를 전반적으로 관리할 수 있는 장고 관리자 계정을 하나만들어준다.
(test) C:\04_pyweb\webpage> python manage.py createsuperuser
Username:
Username: admin
Email address: admin@kgitbank.com
유저네임은 admin으로 할것이고.
Password:
Password (again):
This password is too short. It must contain at least 8 characters.
Bypass password validation and create user anyway? [y/N]: y
비밀번호를 너무 짧게해서 짧은데 괜찮냐고 물어보는 것이다 . y(yes)를 가감하게 입력한다.
Superuser created successfully.
관리자 계정이 성공적으로 생성됐다.
(test) C:\04_pyweb\webpage> python manage.py runserver
서버를 다시열어주고 .
주소창 뒤에다 /admin을 입력해주면.
이렇게 페이지가 뜨는데 언어를 한글로 바꿔준다.
config에 settins.py에서
language_code = "ko-kr"
time_zone = 'asia/Seoul' 로 바꿔준다.
그리고 웹페이지를 끄고 다시 열어주면.
이렇게 한글로 바뀐다.
로그인을 해주면 사이트 관리라는 화면으로 넘어온다.
이 슈퍼유저가 굉장히 많은 것을 할 수 있다.
board에 admin.py로 가서.
admin.py로 가서 검색기능을 추가해준다.
게시글 목록을 만들어보자.
우선 settings.py에 'DIRS : [BASE_DIR/ 'templates'] 를 확인해준다.
만약에 dirs를 안건들일꺼다 하면 .
templates 밑에 board 폴더를 만들어준다.
board에 있는 view파일에 index라는 함수에서 http리스폰스 이런 응답을 뿌려주겠다.
HttpRequest = 요청
HttpResponse = 응답 .
항상 웹페이지의 동작은 서버가 클라이언트한테 request를 요청하고.
서버는 클라이언트에게 response를 돌려주는게 기본동작이다.
board 에 views.py로 돌아가서
question.object = 퀘스천 모델을 가지고 노는것이다.
Question.objects.all() 이면 모든것이 다나오는것
order by는 정렬. create_date(작성날짜)를 기준으로 정렬을 하겠다는 것이다.
제일 최신이 맨위로 올라오도록 내림차순정렬을 해주기위해서 -create_date이다 .
뒤에서 써먹기위해서 context라는 딕셔너리를 만들어서 question_list를 value로 넣어줬다.
render : 파이썬의 함수를 가공해서 q_list.html파일에다가 돌려주겠다.
templates에 board - q_list.html파일을 작성해보자.
html에도 if문이 존재하고 for문이 존재한다.
if 조건으로 question_list를 넣어줬다. list가 있으면 참.
거짓이되면 게시글이 없습니다. 코드가 동작.
if문을 열었다면 end if로 닫고 for문은 endfor로 닫는다.
객체들을 써먹기위해서 중괄호를 2개쓰는것이다.
게시글이 몇개가 될지 모르기때문에 for문을 돌린다. question_list안에있는 question내부항목들을 하나하나 만들어준다.
question모델의 고유값이 될 수 있는게 id이다. 링크를 걸어서 question제목을 화면에 출력되게 만들어준것이다.
ex) ls = [1,2,3,4,5]
for i in ls:
question_list라고 하는 list에 question이라는 변수로 하나하나써먹고있다.
onemore를 누르면
board- urls.py로 가보자
Page not found (404)
Request URL:
http://127.0.0.1:8000/board/2/ |
onemore라는 링크를 열기위해서는
board/2가 붙어줘야한다. 그래서 숫자를 붙히려고 int형 question_id를 쓰겠다. 이것을 views.detail로 연결시키겠다.
다시 views.py로 가서 detail함수를 만들어준다.
urls.py에있는 path:경로
즉 views에 있는 detail함수에 있는 question_id를 써먹겠다.
question이라는 변수에다가 그 id값을 가지고 get으로 question객체 하나를 뽑아내서 넣어줬다.
context라는 딕셔너리를 만들어주고 render로써먹었다.
그러면 board/q_detail.html이 필요하겠다.
board 폴더에 q_detail.html을 만들어주자.
다시 onemore를 누르면
자 그러면 /board/33/을 다시 띄워보자
친절하게 존재하지 않는다고 뜬다.
raise self.model.DoesNotExist(
board.models.Question.DoesNotExist: Question matching query does not exist.
[15/Apr/2023 16:46:09] "GET /board/33/ HTTP/1.1" 500 72376 클라이언트에도 서버오류라고뜬다.
다시 view.py의 함수 수정.
추가로 import하나 시켜준다.
def detail을 수정해주면
404가 뜨게된다. 500은 servier error이고 404는 client error 클라이언트가 서버에 요청한 자료가 없다.
urls.py로 넘어오는게 /board/
urlpatterns을 수정해준다.
이 name이라는 이름을 가지고 ''는 index로 연결 시킬 수 있게 수정해준다.
q.list.html로 넘어가보자.
href 를 수정해준다.
url detail로 연결시키겠다. detail이라는 이름을 넘겨줄 값을 띄어쓰기로 구분지어서 question_id 값으로 지정해준다.
path('<int:question_id>/', views.detail), == <li><a href="{% url 'detail' question.id %}"
즉, 주소가 바꼇다고하면 일일이 수정하는 것이 아니라 무조건 detail이라는 이름으로 접근할 수 있도록 만들어놨다.
만약에 게시판이 여러개다 라고하면은 다른 페이지에서도 detail이라는 이름을 써야될 수 있다.
urls.py로 넘어가서
app_name을 지정해준다.
q_list에 넘어가서 board콜론 detail로 바꿔준다.
다음은 댓글 기능 구현을 알아보자.
'vscode를 이용한 웹구축(html)' 카테고리의 다른 글
python웹구축 게시글 작성 폼 구현 (0) | 2023.04.16 |
---|---|
파이썬 게시글 목록과 댓글 css(bootstrap) html (0) | 2023.04.16 |
댓글 기능 구현하기 . (0) | 2023.04.15 |
python을 이용한 웹구축 (0) | 2023.04.09 |
기본 html태그들 4월 9일 강의. (0) | 2023.04.09 |