• 1401/05/31

redirect vs reverse :

سلام استاد خسته نباشید . در قسمت 67 گفتیم بعد اینکه کاربر فرم contact رو پر کرد مثلا بره به صفحه home اینجا هم از redirect استفاده کردین هم از reverse میشه درباره تفاوت اصلیه redirect و reverse توضیح بدین و اینکه چرا دوتاش باهم استفاده شد ??

حتی من فقط redirect رو قرار دادم  redirect("home-page") و هیچ مشکلی نداشت.

آیای لازمه حتما reverse هم انجام بدیم؟؟ ممنونم

def contact_page(request):
	if request.method == "POST":
		print(request.POST)
		return redirect(reverse("home-page"))
	
  • 1401/06/01
  • ساعت 22:41

با سلام.

 

تابع reverse اجازه می دهد تا جزئیات url را از فایل urls.py و از طریق مقدار نام ارائه شده در آن بازیابی کرد و در صورتی که URL ها تغییر کرد، همچنان با استفاده از name بتوان به آنها دسترسی داشت.

redirect ( که البته مختص django هم نیست) هنگامی که بخواهیم کاربر را به یک URL خاص هدایت کنیم، به کار می رود و عملاً URL در browser تغییر می کند.

از تفاوتهای دیگر:

reverse یک رشته باز می گرداند که مسیر بازدید از view با نام داده شده است. پارامترهای URL در آن اختیاری است.

در redirect یک شیء HttpResponseRedirect باز می گردد. این Object را می توان توسط view به عنوان پاسخ http بازگردانیم.

 

البته این object یک پارامتر  boolean خاص به نام permanent ( با مقدار پیش فرض False)  دارد و اگر True باشد، HttpResponsePermanentRedirect باز می گرداند.

 

تفاوت دیگر اینکه reverse از دو پارامتر args, kwargs برای پرکردن مقادیر پارامترهای URL استفاده می کند و در redirect از پارامترهای positional و named parameters  استفاده می شود.

 

آیای لازمه حتما reverse هم انجام بدیم؟؟ 

خیر. لازم نیست. ولی فکر می کنم بسته به کدها ( در اینجا کدهای home page) پاسخ می تواند بله / خیر باشد.

 

موفق باشید.


  • 1401/06/03
  • ساعت 09:34

سلام دوست من

پاسخ دوستمون weby صحیح هستش


logo-enamadlogo-samandehi