توی این آموزش میخوام بهتون بگم چطور صفحه 404 جنگو را شخصی سازی کنید و صفحه دلخواه خودتون را به کاربر نشون بدید.
وقتی یه آدرسی که در urlpatterns های ما وجود نداشته باشه (مثل : http://127.0.0.1:8000/fdgfm ) و ما وارد اون آدرس بشیم جنگو صفحه ای مشابه صفحه زیر را به ما نشون میده :
اما این صفحه ای نیست که جنگو به کاربران ما نشون میده برای دیدن اون صفحه باید اول دو مقدار را در فایل settings.py پروژه تون تغییر بدید :
# settings.py
DEBUG = True
ALLOWED_HOSTS = []
تغییر بدید به :
DEBUG = False
ALLOWED_HOSTS = ['127.0.0.1']
حالا دوباره وارد آدرس http://127.0.0.1:8000/fdgfm بشید این بار صفحه زیر را میبینید و دقیقا این همون صفحه ای است که بقیه کاربران هم می بینید :
دو روش برای تغییر صفحه 404 پیش فرض جنگو وجود داره که روش اول راحت تر از دومی هست :
روش اول : کافیه برای تغییر این صفحه یه فایل html به اسم 404.html ( دقت کنید که حتما باید اسمش همین باشه و گرنه همون صفحه پیش فرض را براتون میاره ) توی یکی از دایرکتوری های templates که توی پروژه تون وجود داره بسازید بعد از اون خود جنگو متوجه میشه و این صفحه را جایگزین قبلی میکنه.
روش دوم : این روش یکم سخت تر از روش اول هست اما کاربردش برای زمانی هست شما میخواهید یک دیتایی را توی این صفحه به کاربر نشون بدید :
باید وارد یکی از فایل ها پروژه تون به اسم views.py بشید و کد زیر را داخلش قرار بدید :
# views.py
def not_found(request, exception): return render(request,'404.html')
به حالا وارد فایل urls.py بشید و این کد را به کد هاتون اضافه کنید ( فقط خط چهارم را اضافه کنید ) :
# urls.py
urlpatterns = [ path( ' admin/', admin.site.urls), ] handler404 = 'myapp.views.not_found'
حالا اگه دوباره وارد آدرس http://127.0.0.1:8000/fdgfm بشید میبینید که صفحه دلخواه شما را باز هم براتون اورده.
برای بقیه اررور ها مثل 403 ، 500 و ... هم باید به همین روش عمل کنید و به جای 404 عدد 500 یا 403 را قرار بدید.