需要登录,并且无法在django中注销

问题描述 投票:0回答:2

这是我的views.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)

我的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'),
]

因此,home.html的直接重定向问题没有通过表单登录路由,并且注销功能不起作用,我在/ logout /处遇到ValueError。视图django.contrib.auth.logout没有返回HttpResponse对象。它返回None。编写的函数是否适合注销或可能出现一些错误,我无法弄清主要问题是什么]

注意:-@login必需,但注销功能不起作用

python django
2个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.