이 기사에서는 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/[email protected]/ 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 양식을 만들었습니다.
출력
-