在 Django 的所有页面上处理 LoginView 登录的最佳方法

问题描述

我是 Django 的新手,我花了很多时间试图找到我的问题的解决方案,但没有成功。我有一个包含在 base.html 文件中的顶部导航栏,每个页面都扩展了 base.html。在我的导航栏中,我有一个显示模态(引导程序)的按钮,我希望这个模态显示登录表单。我的url.py如下:

from django.urls import path,include
from .views import RegisterView
from django.contrib.auth.views import LoginView,logoutView,PasswordResetView,PasswordResetDoneView,PasswordResetConfirmView,PasswordResetCompleteView,PasswordChangeView,PasswordChangeDoneView

urlpatterns = [
    # Mapping django auth at the root
    # The URLs provided by auth are:
    # login/ [name='login']
    # logout/ [name='logout']
    # password_change/ [name='password_change']
    # password_change/done/ [name='password_change_done']
    # password_reset/ [name='password_reset']
    # password_reset/done/ [name='password_reset_done']
    # reset/<uidb64>/<token>/ [name='password_reset_confirm']
    # reset/done/ [name='password_reset_complete']
    #path('',include('django.contrib.auth.urls')),path('password_reset/',PasswordResetView.as_view(),name='password_reset'),path('password_reset_done/',PasswordResetDoneView.as_view(),name='password_reset_done'),path('password_reset/<uidb64>/<token>/',PasswordResetConfirmView.as_view(),name='password_reset_confirm'),path('password_reset/complete/',PasswordResetCompleteView.as_view(),name='password_reset_complete'),path('password_change/',PasswordChangeView.as_view(),name='password_change'),path('password_change/complete/',PasswordChangeDoneView.as_view(),name='password_change_done'),path('login/',LoginView.as_view(),name='login'),path('logout/',logoutView.as_view(),name='logout'),path('register/',RegisterView.as_view(),name='register'),]

正如您在上面看到的,path('login/', 只会正确解析 {{ form }} 中的 localhost:8000/login,但我希望它在所有路径中解析以实现我想要的。意思是,如果我导航到 localhost:8000/login 并从导航栏打开模态,我会看到登录表单,但如果我从 localhost:8000/anyOtherPath 的导航栏中打开模态,那么它不会显示登录表单。>

实现我想要的最佳推荐方法是什么?如果您想查看我的更多代码以更好地了解我的情况,请告诉我。

总而言之,我在 base.html 中有一个导航栏,并且每个页面都扩展了 base.html。导航栏包含一个用于显示模态的按钮,我想在该模态中显示一个登录表单,无论我在哪个页面上。

非常感谢这里的任何帮助。提前致谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)