Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Django에서 스크린샷 찍기 웹사이트 만들기

<시간/>

이 기사에서는 Django에서 스크린샷을 찍는 웹사이트를 만드는 방법을 살펴보겠습니다. 이 웹사이트는 기본적으로 "스크린샷 찍기"를 클릭할 때마다 스크린샷을 찍습니다. 그런 다음 스크린샷을 미디어 폴더에 저장하고 원할 때마다 볼 수 있습니다.

예시

이제 프로젝트와 앱을 만드는 것부터 시작하겠습니다.

settings.py에서 INSTALLED_APPS 앱 이름을 추가하고 하단에 이 코드를 추가하세요 -

MEDIA_URL = '/media/'
MEDIA_ROOT = BASE_DIR/'media'

이미지 업로드를 위해 기본 미디어 폴더를 설정했습니다.

이제 프로젝트의 url.py에서 -

from django.contrib import admin
from django.urls import path,include

urlpatterns = [
   path('admin/', admin.site.urls),

   # this is my app name
   path('',include('screenshottaker.urls'))
]

여기에 url.py 앱을 추가했습니다.

앱의 url.py에서 -

from django.urls import path,include
from . import views
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
   path('', views.home)
]+ static(settings.MEDIA_URL,document_root = settings.MEDIA_ROOT)

간단한 보기를 렌더링하고 미디어 원뿔형 URL을 설정했습니다. .

다음 모듈을 설치하십시오 -

pip install pyautogui
pip install pillow

여기에 사용할 라이브러리를 설치했습니다.

views.py에서 , 다음 코드를 추가하십시오 -

from django.shortcuts import render

# Create your views here.
import random
import pyautogui
from django.conf import settings
from django.contrib import messages

def home(request):
   if request.method == "POST":
      ss = pyautogui.screenshot()
      img = f'myimg{random.randint(1000,9999)}.png'
      ss.save(settings.MEDIA_ROOT/img)
      messages.success(request,'screenshot has been taken')
      return render(request,'home.html',{'img':img})
   return render(request,'home.html')

여기 views.py에서 , 우리는 단순히 pyautogui를 만들었습니다. 스크린샷을 찍기 위해 png로 난수를 생성했습니다. 이미지 이름을 생성합니다. 그런 다음 MEDIA_ROOT에 이미지를 저장했습니다. 미디어 폴더입니다. 그런 다음 프론트엔드에 메시지와 방금 찍은 스크린샷을 보냈습니다.

이제 같은 수준의 프로젝트 및 앱 디렉터리에 "미디어" 폴더를 만들어야 합니다.

템플릿 만들기 폴더 동일한 수준의 마이그레이션 폴더에 디렉토리를 만들고 "home.html"을 만듭니다. 다음 코드를 추가하십시오 -

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <meta http-equiv="X-UA-Compatible" content="IE=edge">
   <meta name="viewport" content="width=devicewidth, initial-scale=1.0">
   <title>Document</title>
   <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/
dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-+0n0xVW2eSR5OomGNYDnhzAbDsOXxcvSN1TPprVMTNDbiYZCxYbOOl7+AMvyTG2x" crossorigin="anonymous">
</head>
<body>
   <style>
      img{
         width: 800px;
      }
   </style>

{% if messages%}
{% for message in messages%}
<div class="text-center mt-5">{{message}}</div>
{%endfor%}
{%endif%}
   <form method="post" class="text-center">{%csrf_token%}
      <button class="p-3 btn btnsuccess">Take A Screenshot</button>
   </form>
   {% if img%}
<div class="text-center p-5 mt-5 container border shadowsm">
      <img src="https://127.0.0.1:8000/media/{{img}}" class= "img-fluid">
   </div>
   {%endif%}
</body>
</html>

이제 모든 작업이 완료되었습니다. 여기에서 CSS로 간단한 프론트엔드를 만들고 이미지와 메시지를 표시하기 위해 Django 컨디셔닝을 사용하는 POST 양식을 만들었습니다.

출력

-

Django에서 스크린샷 찍기 웹사이트 만들기