Ali Rahmani
Ali Rahmani
خواندن ۲ دقیقه·۴ سال پیش

شخصی سازی ارور 404 ( Page not found ) در جنگو

توی این آموزش میخوام بهتون بگم چطور صفحه 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 را قرار بدید.




جنگو404django
جوجه برنامه نویس
شاید از این پست‌ها خوشتان بیاید