[英]login_required and logout is not working in django
here's my views.py这是我的意见.py
from django.shortcuts import render, get_object_or_404,redirect
from .models import Post,Author
from django.contrib.auth.decorators import login_required
from django.contrib.auth import authenticate,get_user_model,login,logout
from .forms import UserLoginForm,UserRegisterForm
def login_view(request):
next = request.GET.get('next')
form = UserLoginForm(request.POST or None)
if form.is_valid():
username = form.cleaned_data.get('username')
password = form.cleaned_data.get('password')
user = authenticate(username=username, password=password)
login(request,user)
if next:
return redirect(next)
return redirect('/')
context = {
'form': form,
}
return render(request, "login.html", context)
def register_view(request):
next = request.GET.get('next')
form = UserRegisterForm(request.POST or None)
if form.is_valid():
user = form.save(commit=False)
password = form.cleaned_data.get('password')
user.set_password(password)
user.save()
new_user = authenticate(username = user.username, password = password)
login(request,user)
if next:
return redirect(next)
return redirect('/')
context = {
'form': form,
}
return render(request, "signup.html", context)
def logout_view(request):
logout(request)
return redirect('/')
@login_required
def home(request):
return render(request,"home.html", {})
def posts_list(request):
all_posts = Post.objects.all()
context = {
'all_posts': all_posts
}
return render(request,"post_list.html",context)
def posts_detail(request, slug):
unique_post = get_object_or_404(Post, slug=slug)
context = {
'post': unique_post,
}
return render(request,"posts_detail.html",context)
and my url.py is我的 url.py 是
from django.contrib import admin
from django.urls import path
from posts import views
urlpatterns = [
path('admin/', admin.site.urls),
path('login/', views.login_view),
path('signup/', views.register_view),
path('logout/', views.logout),
path('', views.home),
path('post/',views.posts_list),
path('post/<slug:slug>/', views.posts_detail,name='post'),
]
so,the problem the home.html directly redirected without going form login route and the logout function is not workig i am getting ValueError at /logout/ The view django.contrib.auth.logout didn't return an HttpResponse object. so,the problem the home.html directly redirected without going form login route and the logout function is not workig i am getting ValueError at /logout/ The view django.contrib.auth.logout didn't return an HttpResponse object. It returned None instead.它返回 None 代替。 Is the written function is correct for logout or may some error i can't figure out what the main problem is写的 function 是正确的注销还是可能有一些错误我无法弄清楚主要问题是什么
note:- @login required worked but logout function is not working注意:- @login required 工作但注销 function 不起作用
Pleas edit the urls.py for logout:请编辑 urls.py 以注销:
path('logout', views.logout_view)
Try mentioning login and logout settings at the bottom of your settings.py file in this manner尝试以这种方式在 settings.py 文件的底部提及登录和注销设置
update your home path first首先更新您的主路径
path('', views.home, name = 'home'),
then at the bottom of settings.py file put this,然后在 settings.py 文件的底部放这个,
LOGIN_REDIRECT_URL = 'home'
LOGOUT_REDIRECT_URL = 'home'
you can also use some other template name if you like如果您愿意,也可以使用其他模板名称
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.