首页 > 解决方案 > 无法在 django 中使用 react 应用程序中的注销功能

问题描述

我想从反应组件的 django.auth 注销用户,但我不知道如何将我的网址与反应应用程序集成。而且我登录它正常工作没有问题。当我从我的登录表单登录时,它也登录了我的 django/admin,但是当我从我的网站注销时,它并没有从我的管理面板中注销。

Api 应用程序 urls.py

from django.urls import path
from backend.api.views import *
app_name = 'backend'
urlpatterns = [
    path('booklist/', api_user_details, name='userdetails'),
    path('login/', login_auth , name='login'),
    path('signin/', Signin , name='Signin'),
    path('usercheck/', checkusername , name='usernamecheck'),
    path('update/', update , name='update'),
    path('logout/', logout_view , name='logout')
]

API 视图.py

from django.contrib.auth import logout

def logout_view(request):
    logout(request)
    return redirect('login')

反应应用程序组件

import React,{useContext} from 'react';
import './profile_name_block.css';
import profileimg from '../../../person.png';
import { UserContext } from '../../../contexts/UserContext';
// import login from '../../../icons/login.png'
import logout from '../../../icons/login.png'
import profile from '../../../icons/profile.png'
import bookico from '../../../icons/books.png'
import request from '../../../icons/request.png'
const Profiled = () => {
    // eslint-disable-next-line
    const [user,setUser]=useContext(UserContext);
    const Logout = () => {
                    setUser({ logged: false, User_details: {} })
                    localStorage.clear();
                    window.location.href='/api/logout';
 }
    const expand = () => {
        var x = document.getElementById('profile_log');
        console.log(x.style.display)
        if (x.style.display === 'none' || x.style.display === '') {
          x.style.display = 'flex';
        } else {
          x.style.display = 'none';
        }
    }
    if(user.logged===true)
    {
    return(
    <React.Fragment>
        
        <div id="profile_name" onClick={expand}>
        <div id='user_name'>{ user.User_info.userdetails.full_name.toUpperCase() }</div>
            <div id="profile_img">
                <img src={ user.User_info.userdetails.profile_img==null? profileimg:user.User_info.userdetails.profile_img } height="40px" width='40px' id='profileimage' alt='profile' />
            </div>
        </div>
        <div id='profile_log'>
            <span onClick={() => window.location.href="/accountdetails" }>Profile <img id='ico' src={profile}></img></span>
            <span>Requests<img id='ico' src={request}></img></span>
            <span>Your Books<img id='ico' src={bookico}></img></span>
            <span onClick={ Logout }>Logout<img id='ico' src={logout}></img></span>
        </div>
    </React.Fragment>)
    }
    else{
        return null;
    }
}
export default Profiled;

这是我的项目 urls.py

from django.contrib import admin
from django.urls import path,include,re_path
from .views import *
from django.conf.urls.static import static
from django.conf.urls import url
from django.conf import settings
urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/', include('backend.api.urls', 'api')),
]
if settings.DEBUG:
    urlpatterns+=static(settings.STATIC_URL , document_root=settings.STATIC_ROOT)
    urlpatterns+= static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns+= [re_path('.*', index , name='index')]

如果有人可以提供帮助,那就太好了。

标签: pythondjangoreactjs

解决方案


推荐阅读