python - 无法在 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')]
如果有人可以提供帮助,那就太好了。