나의 공부 일기

프로젝트) 크롤링/스크랩핑 프로젝트 5일차 1/2 본문

프로젝트

프로젝트) 크롤링/스크랩핑 프로젝트 5일차 1/2

곽병권 2023. 12. 11. 14:18
728x90

같이 프로젝트를 진행한 팀원: https://jihoon44-it.tistory.com/

 

 

 

 

 

https://k-python-note-taking.tistory.com/62

 

 

프로젝트) 크롤링/스크랩핑 프로젝트 4일차

3일차 프로젝트 링크 입니다. https://k-python-note-taking.tistory.com/61 프로젝트) 크롤링/스크랩핑 프로젝트 3일차 2일차에서는 https://k-python-note-taking.tistory.com/60 프로젝트) 크롤링/스크랩핑 프로젝트 2일

k-python-note-taking.tistory.com

4일차 프로젝트는 여기까지 진행하였습니다.

 

 

5일차 마지막으로 4일차에 만들어놓았던 데이터베이스를 이용하여 장고웹사이트를 만들어보도록 하겠습니다.

 

먼저 장고는

 

메인 프로젝트 폴더의 url에

 include 로 프로젝트앱의 경로를 지정해주어야 합니다.

 

기본으로 이 프로젝트를 서버로 여는 코드인 python manage.py runserver로 장고프로젝트 서버를 실행하게 되면

http://127.0.0.1:8000/ 라는 서버에서 확인할 수 있는데, 이 뒤에 오는 경로를 path의 처음 인자로 넣어줍니다.

ex) path('경로/',include('앱이름.url폴더이름') 이런식으로 지정해줍니다.

 

아 앱을 처음 생성하였으면 경로를 생성해줄 폴더를 하나 만들어야합니다.

사용자가 원하는데로 폴더이름을 생성해준 뒤 '앱이름.폴더이름' 으로 지정해주시면 됩니다.

 

저는 아직 초보자라 알아보기 쉬운 urls.py라고 생성하였습니다.

 

추가적으로 앱을 생성하면 메인폴더에 settings.py 를 들어가서

이 리스트에 앱을 등록해주셔야 합니다.

 

앱이름이 cafeinformation 이라면 cafeinformation.apps.CafeinformationConfig 로 등록해주시면 됩니다.

 

apps 뒤에 있는것은 앱의 apps.py를 확인해보시면 알 수 있습니다.

 

여기까지 했으면 앱을 사용하기 위한 기본세팅이 끝났습니다.

 

 

이제 웹사이트를 만들어줘야합니다.

저는 아직 초보자이기 때문에 가장 기본화면부터 생성하였습니다.

이런 기본 화면을 만들었는데,

 

앱폴더의 views.py에 urls.py에서 그 경로가 동작되면 실행 될 코드들을 작성해주면 됩니다.

urlpatterns라는 path에 들어있는 메서드를 이용해서 경로를 넣어줍니다.

 

아까 메인폴더의 urls.py에 앱의경로를 include 했을때 맨 앞에 작성하였던 경로가 실행되면

지금 이 비어있는 경로로 지정되어있는것이 실행됩니다.

 

name으로 이 경로의 이름을 지정해주었고, app_name으로 이 앱경로의 이름을 지정해주었습니다.

 

views.index 는 views.py에 있는 index라는 함수를 실행하겠다는 의미입니다.

저는 이렇게 그냥 html파일만 열게 만들었습니다.

request로 이 함수 이 경로가 호출되면 옆에 html파일이 열린다는 뜻입니다.

 

아 그리고 기본적으로 이렇게 html파일을 지정해줄때 templates폴더에 앱이름 폴더에 있는 html파일을 실행하도록 설정해주어야 합니다.

아니면 만약에 앱이 여러개일경우 혼선이 생길 수 있기 때문입니다.

위에 templates폴더도 마찬가지로 처음 생성할때는 없는 폴더이기 때문에 사용자가 직접 생성해주어야 합니다.

장고에서 기본적으로 templates 폴더에 앱이름 폴더 로 경로가 지정되어있기때문에 사용자가 추가로 수정해야할 세팅은 없습니다.

 

장고에서는 여러번 비슷하게 사용되는 html파일을 간단하게 사용할 수 있는 기능이 존재합니다.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>{% block title %}{% endblock  %}</title>
   
    <style>
        table, th, td {
            border: 1px solid black;
            text-align: center;
        }
        div{
            position: relative;
            top: 60px;
        }
        #btn{
            position: fixed;
            bottom: 20px;
            right: 13%;
        }

    </style>
    {% block head %}{% endblock  %}
</head>

<body>
    {% block top %}{% endblock  %}
    {% block content %}{% endblock  %}
    {% block bottom %}{% endblock  %}
</body>
</html>

저는이렇게 base.html 이라는 자주 사용되는 html의 기본틀을 만들어주었습니다.

 

link 는 웹사이트를 조금 더 깔끔하게 해주기위해 부트스트랩을 사용하려고 그 링크를 지정해주었습니다.

style도 마찬가지로 웹사이트를 조금 더 깔끔하게 해주기위해 자주사용되는 태그들을 지정하여 꾸며주었습니다.

 

이 base.html을 베이스로 사용하는 html파일에서 각각 block 안에 사용자가 원하는 코드를 작성하면 이 base.html이 기본적인 틀로 만들어진 후 그 사이에 값이 들어가게 되는것입니다.

 

{% extends "cafeinformation/base.html" %}

로 내가 사용할 기본틀을 지정해줍니다.

 

이후 내가 원하는 block를

{% extends "cafeinformation/base.html" %}
{% block content %}
{% endblock  %}

 

이런식으로 사용할부분만 작성해주면 됩니다.

{% extends "cafeinformation/base.html" %}
{% block content %}
    <div class="container" style="width: 500px;">
        <table class="table table-striped">
            <tr>
                <th colspan='2'>메인화면</th>
            </tr>
            <tr>
                <th>
                    파일목록
                </th>
            </tr>
            <tr>
                <form action="{% url 'cafe:detail' %}" class="mt-3">
                    <td colspan="2">
                        <button type="submit" class="btn btn-primary">보기</button>
                    </td>
                </form>
            </tr>
        </table>
    </div>
{% endblock  %}

 

 

 

                <form action="{% url 'cafe:detail' %}" class="mt-3">
                    <td colspan="2">
                        <button type="submit" class="btn btn-primary">보기</button>
                    </td>
                </form>

이 보기 버튼을 누르면 form태그에 있는 action경로가 실행되도록 만들어주었습니다.

 

{% url 'cafe:detail' %}은 앱의 url파일에 있는 '앱이름:경로이름' 입니다.

자주 사용되므로 이부분은 숙지해주었습니다.

 

이제 detail에 대해 정리해보겠습니다.

마찬가지로 경로를 지정해줍니다.

from django.urls import path

from . import views

app_name = 'cafe'

urlpatterns = [
    path('',views.index,name='index'),
    path('detail/',views.file_list,name='detail'),
]

 

 

 

 

나머지는 추가적으로 정리해서 올리도록 하겠습니다.~

 

 

 

 

 

728x90