특별한/2019 부경 메이커톤

부경 메이커 톤_스마트 도어락 시스템을 활용한 공유 강의실 시스템_01

송디 2019. 10. 30. 23:17

오늘은 유저가 볼 수 있는 웹 앱을 만들어 볼 것이다. 

우선, django를 이용해 페이지를 만들어 볼 것이다. 

 

필요한 페이지는 총 세 페이지이다. 

 

 

Main_ShareUni  UserInfo_ShareUni Result_ShareUni 
- 시간대와 강의실을 선택한다 - 유저 정보를 입력하여 강의실 예약 신청한다.  - 결과를 반환한다. (성공시 비밀번호를, 실패시 실패 문구를)

우선, Django로 구현해보도록 한다. 

일단 간단한 개념부터 파악한다. 

Django는 MVC 패턴 기반 MVT 이다. 같은 개념이긴한데 Django에서는 view가 template 그리고 controller가 view로 동작되기 때문에 그렇게 불린다. view가 view가 아닌게 헷갈리기는 하지만 또 장고의 특색이라고 생각하자. 

 

장고의 MVT 패턴


*** 해야 할 것

- 강의실을 클릭하면 강의실과 시간 정보를 가지고 페이지 이동할 수 있도록

- userInfo.html에서 데이터를 입력하여 user 테이블에 추가하도록

- 테이블 간의 조인이 가능하도록

 

관리자 화면에서 방 정보 알 수 있도록 보여주는 table

 


 

 

현재 101을 누르면  

 

이 형태로 들어간다. 

 

127.0.0.1:8000/userinfo/101 이런식으로 들어갈 수 있도록해보자.

 

  <a href="{% url 'shareUniApp:userInfo' 
  roominfo=roominfo.user_classroom roomtime=roominfo.user_reserveTime %}">
  {{roominfo.user_classroom}}
  </a>

html에 a태그와 form 사이에서 고민을 했다. 그러나 클릭을 하면 이동을 하는 형식이랑 a href로 해주는 것이 더 좋다는 생각이 들었다. a href로 페이지 이동을 할 때에는 위처럼 {% url '가고자 하는 url 주소' url 주소에 보내는 데이터 %} 형태로 보낸다. 한가지 주의 할 점은 위 코드에서 'shareUniApp:userInfo'를 확인할 수 있는데, userInfo라는 별명만 붙이면 되는 것이 아니라 앞에 shareUniApp을 붙여줘야 한다.

#pkdp/shareUniApp/urls.py
from django.urls import path
from . import views

app_name = 'shareUniApp'
urlpatterns = [
    path('', views.index, name='index'),
    path('userinfo/<str:roominfo>?<str:roomtime>/',views.userInfo, name='userInfo'),
    path('result/',views.result, name='result'),
]

 

결론적으로 url에 classroom과 reserveTime을 실어보냈다. 

 

<!-- userinfo.html -->

<!DOCTYPE html>
<html>
<head>
	<title>쉐어 유니버스티</title>
	 <style>
      table {
        width: 100%;
      }
      table, th, td {
        border: 1px solid #bcbcbc;
    </style>
</head>
<body>
	사용자 입력 화면

  <form action ='/result/' method="post"> 
    {% csrf_token %} 
    <!-- action에는 결과가 전달될 url 입력 // -->
    <p>room_classroom : <input type="text" name="classroom" value={{resultvalue}} readonly></p>
    <p>room_reserveTime : <input type="text" name="reserveTime" value={{resulttime}} readonly></p>
    <p>user_name : <input type="text" name="name"></p>  
    <p>user_department : <input type="text" name="department"></p>
    <p>user_email : <input type="text" name="email"></p>
    <button name ="choice" value = "11"> 예약하기</button>
  </form>
 
</body>
</html>

 

728x90