post_new
، post_edit
، post_draft_list
، post_remove
و post_publish
را فقط برای افرادی که در سایت لاگین کرده باشند قابل دسترس کنیم. جنگو با ابزارهای خوبی برای این کار تجهیز شده است که به آن دکوراتور میگوییم. نگران توضیحات فنی آن نباشید بعداً میتوانید در مورد دکوراتورها بخوانید. دکوراتوری که ما میخواهیم از آن استفاده کنیم در ماژول django.contrib.auth.decorators
قرار داده شده و نام آن login_required
است.post_new
, post_edit
, post_draft_list
, post_remove
و post_publish
، یک خط مانند زیر اضافه کنید. انگار که به آن تزیینی (decorator) اضافه کردهاید.http://localhost:8000/post/new/
را باز کنید. تفاوتها را متوجه شدید؟اگر یک فرم خالی میبینید احتمالاً هنوز به واسطه ورود به بخش ادمین، شما در وبسایت لاگین هستید برای لاگاوت کردن به آدرسhttp://localhost:8000/admin/logout/
بروید سپس دوباره آدرسhttp://localhost:8000/post/new
را باز کنید.
post_edit
, post_remove
, post_draft_list
و post_publish
نیز اضافه کنید.mysite/urls.py
یک url به این شکل path('accounts/login/', views.LoginView.as_view(), name='login')
اضافه کنید، بنابراین فایل شما شبیه به این خواهد شد:blog/templates/registration
درست کنید و فایلی به نام login.html
درون آن بسازید و این خطوط را به آن اضافه کنید:mysite/settings.py
اضافه کنیم:blog/templates/blog/base.html
را باز کنید و آن را به شکلی تغییر دهید که بخش بین تگهای <body>
، مانند زیر باشد:blog/templates/blog/base.html
را مانند زیر اصلاح کنید:mysite/urls.py
اضافه کنید که به صفحه لاگاوت جنگو (مثلاً django.contrib.auth.views.logout
) ارجاع دهد. چیزی شبیه به این: