해결된 질문
작성
·
89
·
수정됨
0
안녕하세요,
mysite>urls.py에
handler404 = 'mysite.views.error_404_view' # #404에러 발생시 처리 handler500 = 'mysite.views.error_500_view'
이렇게 작성하고,
views.py 에서 def 로 함수 정의해서 쓰는데요.
handler404, handler500 views.py에 context로 연결하는 예제 하나만 보여주시면 안될까요.
원래 질문은 handler404, handler500를 어디에 쓰는지 모르겠다 였는데, 강의 후반부에 context로 연결해서 쓴다고 말씀해주셔서 질문을 바꿨습니다.
다른 질문은 static 부분에서
main.html 에서
<img src = "{% static 'mysite/django.png' %}" alt="Django image" />
이렇게 작성해서 사용하는데, static을 settings.py에 정의해서 사용하신다고 알려주셨는데, 어떤 부분과 대응 되는지 잘 모르겠습니다. STATIC_URL ='/static/' 이부분 뒤로 붙어서
static/mysite/django.png 이런식으로 읽어오게 되는게 맞을까요?
질문 받아주셔서 감사합니다.
답변 2
1
Static관련 질문의 답변은 말씀하신 것이 맞습니다.
settings.py
에서 정의한 STATIC_URL
이, 템플릿에서 사용하는 {% static %}
와 연결되어 있습니다.
이 코드는 STATIC_URL
값과 함께 mysite/django.png
경로를 결합하여 브라우저가 접근할 수 있는 전체 URL을 만들어 줍니다.
만약 STATIC_URL = '/static/'
으로 설정되어 있다면, Django는 이를 다음과 같은 URL로 변환합니다
/static/mysite/django.png
즉, 최종적으로 브라우저에서는 /static/mysite/django.png
경로에서 이미지를 불러오게 되는 것이죠.
1
안녕하세요 sunnnwo님,
아래와 같이 render를 사용하셔서 views.py
에 넣으시고
from django.shortcuts import render
# Custom 404 handler
def custom_page_not_found_view(request, exception):
return render(request, 'errors/404.html', status=404)
# Custom 500 handler
def custom_error_view(request):
return render(request, 'errors/500.html', status=500)
404.html
파일은 errors
디렉토리 안에 넣으시고
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Page Not Found</title>
</head>
<body>
<h1>404 - Page Not Found</h1>
<p>Sorry, the page you're looking for does not exist.</p>
<a href="/">Go back to homepage</a>
</body>
</html>
500.html
파일은 errors
디렉토리 안에 넣으시고
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Server Error</title>
</head>
<body>
<h1>500 - Internal Server Error</h1>
<p>Oops! Something went wrong on our end. Please try again later.</p>
<a href="/">Go back to homepage</a>
</body>
</html>
마지막으로 urls.py
안에는 요런식으로 하시면
from django.conf.urls import handler404, handler500
from . import views
handler404 = 'myapp.views.custom_page_not_found_view'
handler500 = 'myapp.views.custom_error_view'
urlpatterns = [
# your URL patterns
]
아래와 같은 url에 에러가 났을 때 그 페이지가 렌더링 되게 됩니다.
def some_view(request):
raise Exception("This is a server error")
보통 404는 페이지나 링크가 존재하지 않을 때 사용하시고, 500은 서버에서 에러가 났을때, 즉 코드가 에러가 났을 때 보여주면 됩니다.
친절한 답변 너무나 감사드립니다.
해외에서 혼자 공부하느라 제가 생각하는게 맞는지 확인할 방법이 별로 없었는데, 너무 감사합니다.