Я создаю приложение, которое позволяет пользователям просматривать сообщения. Тем не менее, каждый раз, когда я пытаюсь войти в систему, если я не установил LoginRequiredMixin, пользователь все равно сможет просматривать сообщения после выхода из системы. Но когда я устанавливаю LoginRequiredMixin каждый раз, когда пользователь помещает информацию, он продолжает возвращаться на главную страницу, и ничего не происходит.
my home / 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']
my home / urls.py:
path('',views.PostListView.as_view(), name='home'),
my main / urls.py
urlpatterns=[
path('signup/',views.signup,name='signup'),
path('signin/',views.user_login, name='user_login'),
path('signout/', views.user_logout, name='user_logout'),
path('',views.main_page,name='main_page'),
path('edit/', views.edit_profile, name='edit_profile'),
path('', include('django.contrib.auth.urls')),
]
my main / views.py:
def main_page(request):
return render(request,'main/user_login.html')
@login_required
def user_logout(request):
logout(request)
return redirect('main:main_page')
def signup(request):
if request.method == 'POST':
form = SignUpForm(request.POST)
if form.is_valid():
user = form.save()
raw_password = form.cleaned_data.get('password1')
user = authenticate(username=user.username, password=raw_password)
return redirect('main:main_page')
else:
form = SignUpForm()
return render(request, 'main/signup.html', {'form': form})
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(reverse('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})
int my settings.py У меня есть только:
LOGIN_URL = 'main:main_page'
Я много работал над этим и не могу найти, как решить эту проблему. Заранее спасибо!