У меня есть пользовательский пользователь в Django, и когда я выхожу из системы, пользователь все равно может увидеть главную страницу, перейдя по ссылке. Я не знаю, какая часть неверна, так как я уже использую декораторы. У меня есть два приложения, основное и домашнее.
это мой urls.py:
urlpatterns = [
#Has to be included for Forgot Password funcitonality on main page
path('', include('django.contrib.auth.urls')),
path('admin/', admin.site.urls),
path('',views.main_page,name='main_page'),
#path('profile/logout', views.user_logout, name='logout'),
path('',include('main.urls'),name='main'),
url(r'^home/',include(('home.urls','home'), namespace='home'))
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT ) + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
Это мой main / views.py
def user_login(request):
if request.method == 'POST':
username = request.POST.get('username', '')
password = request.POST.get('password', '')
user = authenticate(request, username=username, password=password)
if user is not None:
return redirect('home:home')
else:
messages.error(request,'Sorry, the username or password you entered is not valid please try again.')
return HttpResponseRedirect('/')
else:
form=AuthenticationForm()
return render(request, 'main/user_login.html', {"form":form})
И мой вид выхода из системы в main / views.py
@login_required
def user_logout(request):
logout(request)
return HttpResponseRedirect('main/user_login.html')
Это мой дом / views.py
@login_required
def home(request):
posts = Post.objects.all()
context = {'posts':posts}
return render(request, 'home/home.html', context)
class PostListView(ListView):
model = Post
template_name = 'home/home.html' # <app>/<model>_<viewtype>.html
context_object_name = 'posts'
ordering = ['-date_posted']
Мой дом / urls.py
path('',views.PostListView.as_view(), name='home'),
Я также сталкиваюсь с проблемой, что мне нужно дважды нажать кнопку входа в систему, иначе она будет зависать при обработке запроса, однако я не вижу, что проблема заключается в:
else:
messages.error(request,' Sorry, the username or password you entered is not valid please try again.')
return HttpResponseRedirect('/')
Когда я удаляю эту строку, страница не застревает в «запросе на обработку». Я не знаю, связано ли это с проблемой выхода из системы, хотя
Заранее спасибо!