Django вход и выход не работают должным образом - PullRequest
0 голосов
/ 21 марта 2020

У меня есть пользовательский пользователь в 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('/')

Когда я удаляю эту строку, страница не застревает в «запросе на обработку». Я не знаю, связано ли это с проблемой выхода из системы, хотя

Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...