Skip to content

계명대학교 하계방학 해커톤 4조 계명포털

Notifications You must be signed in to change notification settings

Henry-Cha/KM_Portal-Beta

Repository files navigation

KM_Portal

계명대학교 하계방학 해커톤 최우수(1등) 수상
4조 계명포털 - 계대 학생들을 위한 커뮤니티

교내캡스톤 최우수




사용 기술스택

Back : python3, Django
Front : HTML5, CSS3, BootStrap5, JavaScript


API

-학교 지도와 주요 시설을 표시하고 마커에 꿀팁 정보 등 확인

var marker1 = new kakao.maps.Marker({
   map: map, 
   position: new kakao.maps.LatLng(35.85534833720473, 128.48569272749938)
});
// 커스텀 오버레이에 표시할 컨텐츠 입니다
var content1 = '<div class="wrap">' + 
           '    <div class="info">' + 
           '        <div class="title">' + 
           '            봉경관(사)' + 
           '            <div class="close" onclick="closeOverlay1()" title="닫기"></div>' + 
           '        </div>' + 
           '        <div class="body">' + 
           '            <div class="img">' +
           '                <img src="/static/images/map/1.jpg" width="73" height="70">' +
           '           </div>' + 
           '            <div class="desc">' + 
           '                <div class="ellipsis">사회과학대학</div>' + 
           '                <div class="jibun ellipsis">행정실 : 053-580-5392</div>' + 
           '            </div>' + 
           '        </div>' + 
           '    </div>' +    
           '</div>';
// 마커 위에 커스텀오버레이를 표시합니다
var overlay1
// 마커를 클릭했을 때 커스텀 오버레이를 표시합니다
kakao.maps.event.addListener(marker1, 'click', function() {
   overlay1 = new kakao.maps.CustomOverlay({
   content: content1,
   map: map,
   position: marker1.getPosition()       
});
});
// 커스텀 오버레이를 닫기 위해 호출되는 함수입니다 
function closeOverlay1() {
   overlay1.setMap(null);     
}

-학교와 관련된 공지, 정보 등을 크롤링해서 한눈에 확인 가능

-bs4 이용

def check_standard():
    data = {}
    url = "https://www.kmu.ac.kr/uni/main/page.jsp?mnu_uid=143&"
    res = requests.get(url)
    xml = res.text
    n = 1

    soup = BeautifulSoup(xml, 'html.parser')
    datalist = soup.find('tbody').findAll('tr')
    for i in datalist:
        data[f"st_sub{n}"] = (i.find('td', class_='subject').text)
        data[f"st_href{n}"] = (i.find('td', class_='subject').find('a')["href"])
        data[f"st_wrt{n}"] = (i.find('td', class_='writer').text)
        data[f"st_date{n}"] = (i.find('td', class_='date').text)
        n = n+1
        if n is 10:
            break;
    return data
  • CRUD

-게시판 별 구분되는 모델

-작성,읽기,수정,삭제 (로그인 확인, 페이징) 등

@login_message_required
def free_write(request): # 수정 : 함수이름 free 추가 redirect /board >> /board/free 변경
    if request.method == "POST":
        user = request.user
        title = request.POST['title']
        content = request.POST['content']
        post = FreePosting(user=user, title=title, content=content, date=timezone.now()) # 수정 : Post >> FreePosting
        post.save()
        return redirect('/board/free')
    else:
        form = PostForm()
    return render(request, "board/write.html", {'form': form,'url':'free'})

def free_index(request): # 수정함 : context url free 추가 함수이름 free추가 postList, postNum Post >> FreePosting 변경
        # 게시물 목록 출력
    postList = FreePosting.objects.all().order_by('-id')
    postNum = FreePosting.objects.count()
        #페이징처리
    page = request.GET.get('page', '1')
    paginator = Paginator(postList, '10')
    page_obj = paginator.page(page)
    context = {'postList': postList ,'postNum':postNum,'page_obj':page_obj,'url':'free','boardname':'자유'} 
    return render(request, 'board/list.html', context)


화면구성

  • 메인화면

메인

맵캡처

  • 게시판

게시판캡처

  • 게시글

게시글캡처

  • 질문게시판

질문이캡처

  • 질문 글, 채택

질문글캡처

질문글채택캡처

  • 알리미

알리미캡처

  • 회원가입

가입캡처

  • 로그인

로그인캡처

네비캡처

  • 마이페이지

마이페이지캡처

About

계명대학교 하계방학 해커톤 4조 계명포털

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published