Django 登录不重定向到索引

2023-12-31

我有一个登录屏幕,在成功进行身份验证后,它应该在同一基本 URL 上显示用户详细信息,这些天它一直工作得很好,突然间它抛出 302 响应代码HTTP POST /login/ 302 [0.60, 127.0.0.1:53864]当输入正确的用户名和密码时,不会启动重定向,它会永远保持加载。 更奇怪的是,当我重新加载同一选项卡或打开新选项卡时,它会正确登录并显示适当的详细信息。没有进行与登录功能相关的更改,我最近所做的唯一更改是添加重设密码与此无关的功能。

用户登录

def user_login(request):

    field = None

    if request.method == "POST":
        
        username = request.POST.get('username')
        password = request.POST.get('password')

        user = authenticate(username=username,password=password)

        try:

            field = UserModel.objects.get(user__username=username)

            if user:
           
                if user.is_active:
                    
                    login(request,user)
                    
                    return HttpResponseRedirect(reverse('index'))
                else:
                    messages.error(request,'username or password not correct')
                    return HttpResponseRedirect('../')
            else:
                print("Error logging in{}".format(password))
                messages.error(request,'Invalid username/password combination')
                return HttpResponseRedirect('../')
        
        except Exception:
            #return HttpResponse("ACCOUNT NOT ACTIVE!!!")
            messages.error(request,'Entered username does not belong to any account')
            return HttpResponseRedirect('../')
  
    else:
        return render(request,'app/login.html',{})

urls.py

urlpatterns = [
    path('admin/', admin.site.urls),
    url(r'^$',views.IndexView.as_view(),name='index'),
    url(r'login/',views.user_login,name='login'),]

目的:在同一基本 URL(127.0.0.1:8000) 上显示登录和用户详细信息(登录视图),即如果用户登录,则显示用户详细信息,否则显示登录表单
索引视图

class IndexView(TemplateView):
    template_name = 'app/index.html'

    def get_context_data(self,**kwargs):
        context = super().get_context_data(**kwargs)
        if self.request.user.is_authenticated:
            today = date.today()
            print(today)
            context['products'] =ProductModel.objects.filter(usr=self.request.user)
           
            
            print("LOGGED IN")
          
            return context  

索引.html

{% extends 'app/base.html' %}

{%block title %}
<title>TITLE</title>
{% endblock %}


{%block body %}

{% if user.is_authenticated %}
  {% include 'app/header.html' %}
<div class="container">

  
  <h1>Welcome {{user.username}}</h1>
 
    {% else %}
<!--LOGIN FORM HERE-->
{% endif %}
{% endblock %}

这些天一直运行没有任何问题,不知道是什么原因造成的。请提出解决此问题的建议。 谢谢。


好吧,这是一个奇怪的问题,但我在我的一个应用程序的生产中看到了它,我think这与浏览器的缓存有关。可靠地重现确实很难,但自从我进行了以下修复(对于实际上不相关的东西),问题似乎已经得到解决。

尝试设置cache-control对于响应:

response = HttpResponseRedirect(reverse('index'))
response['cache-control'] = 'private, max-age=0, no-cache, no-store'
return response

请告诉我这是否有效,这一直困扰着我,我还没有发现我的修复是否真正有效!

要添加中间件,根据 Django 的文档 https://docs.djangoproject.com/en/3.1/topics/http/middleware/:

中间件.py

class CacheControlMiddleware(SimpleMiddleware):
    def __call__(self, request):
        # Code to be executed for each request before
        # the view (and later middleware) are called.

        response = self.get_response(request)
        response['cache-control'] = 'private, max-age=0, no-cache, no-store'
        return response

然后在settings.py中添加:

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'my_app.middeware.CacheControlMiddleware',
]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django 登录不重定向到索引 的相关文章

随机推荐

  • Datastax cassandra 存在性能问题

    我已经在两台独立的机器上安装了 datastax Cassandra 一台具有 16GB RAM 另一台具有 32GB RAM 并采用大部分默认配置 我创建了一个包含大约 700 列的表 当我尝试使用 java 插入记录时 它每 30 秒能
  • ASP.Net MVC 操作结果是什么?

    是否有所有 ASP Net MVC 操作结果及其用途的列表 我一直忙于使用 ActionResult 来处理几乎所有事情 但我知道这是不正确的 我应该使用更具体的操作结果 我用谷歌搜索过这个但找不到列表 我们刚刚购买了 Wrox 的书 但距
  • 在 XAML 中访问 c​​ontroltemplate 中元素的属性

    我想使用由图像和标签组成的模板化 ComboBoxItems 如果我将模板分配给 ComboBoxItem 我可以以某种方式设置图像的源属性吗 目标是对不同的 ComboBoxItems 使用相同的模板 但每个 Item 中使用不同的图片
  • 使用 Google Drive Api v2 选择特定字段

    我有一个错误 Google Apis Requests RequestErrorInvalid field selection filesize 400 Errors Message Invalid field selection file
  • 如何检测变量值何时发生变化

    如何轻松检测变量值何时发生变化 我希望每当指定的变量更改值时 程序的执行就会在调试器上中断 现在我正在使用 Eclipse 的调试器 对于类或实例变量 右键单击大纲视图中的变量 选择 切换观察点 然后 在断点视图中 您可以右键单击生成的结果
  • G++ 为未使用的模板特化生成代码?

    在我正在处理的项目的一些序列化代码中 我有一个类型 其大小取决于编译器 为了解决这个问题 我决定使用模板专业化 效果很好 一切都在编译时解决 代码看起来有点像这样 不是真正的代码 只是一个例子 template
  • 角度种子 web-script.js 和 cors

    我已经第二天了 我试图从外部域获取一些 json 但我打破了 CORS 我几乎确定如何在 AngularJS 资源中使用 JSONP https stackoverflow com questions 20025711 how to use
  • 适用于 UWP 的 Google API 与自定义重定向方案配合不佳

    我正在编写一个可与 Google Drive API 配合使用的 UWP 应用程序 我的问题似乎出在 Google 针对 UWP 应用程序的糟糕文档 在文档中它指出 此外 您可以使用客户端 ID 的反向 DNS 概念作为自定义 URI 方案
  • 如何在WebView中打开视频播放器?

    我有一个带有 Webview 的 WebApp 在这些页面中 我有一些视频链接 MP4 3GP 当我点击链接时 没有任何反应 public class luxgateway extends Activity WebView myWebVie
  • 具有属性的 Maven 版本

    我有大约 400 个插件的大型 Maven Tycho 项目 我们在每个 POM 文件中指定了应用程序的版本 有没有一种方法可以仅在一个地方指定所有 POM s 的版本 我希望有些人会这样想
  • MySQL 中布尔值的 Boolean 与tinyint(1)

    在 MySQL 数据库中 哪种列类型最适合用于布尔值 我用boolean但我的同事使用tinyint 1 这些数据类型是同义词
  • 将动态生成的复选框添加到react-table并捕获行数据

    我在使用此反应表包向行添加复选框时遇到问题https react table js org story readme https react table js org story readme 我正在尝试向表中的每一行添加一个复选框 我尝试
  • 如果 HTTP_X_FORWARDED_FOR 包含多个 IP 地址,如何从 HTTP_X_FORWARDED_FOR 获取正确的 IP?

    如果 Request ServerVariables HTTP X FORWARDED FOR 返回多个 ip 我应该采用哪一个 以及在 C 中如何执行 据我了解 如果它为空或为空 则客户端计算机不会通过代理 我可以从 Request Se
  • 将文本框绑定到浮点值。无法输入点/逗号

    例如 当我尝试在文本框中输入点或逗号时1 02 or 83 33文本框阻止我输入这样的值 并且输入变成红色 文本框绑定到浮动属性 为什么 我已将文本框绑定到浮动属性Power一个类的实现INotifyPropertyChanged priv
  • Resharper 测试运行程序:无法加载文件或程序集“System.Windows”

    我目前在 VS2012 和 Resharper 7 1 2 上运行单元测试 Nunit 时遇到问题 完整的错误消息在这里 单元测试运行程序无法运行测试 System IO FileNotFoundException 无法加载文件或程序集 S
  • 具有软删除功能的通用存储库

    我有一个通用存储库实现 我正在使用 asp net mvc c 代码优先实体框架 我创建了一个名为 ISoftDelete 的接口 public interface ISoftDelete bool IsDeleted get set 我在
  • Bower 安装显示提示输入信息 debian

    我在尝试在我的项目上执行凉亭安装时遇到问题 我只是在执行凉亭安装我的 Debian 操作系统上的命令 但是当这是识别我的 Bower json 上定义的依赖项时 它被困在我不明白的部分 这是我在命令行中看到的最后一部分 dependenci
  • 如何在 Spring 中使用 Hibernate 将对象列表映射到表中?

    我正在尝试将用户列表映射到位置对象 但出现映射异常 这是因为List对象不被数据库识别 或者为什么我会得到这个异常 这是我的用户类别 Entity Table name users public class NewUser extends
  • 切换 DataGridView 行选择,其中 SelectionMode 为 FullRowSelect

    我有一个 DataGridView 其中 SelectionMode FullRowSelect 和 MultiSelect False 当用户单击一行时 它会按预期被选中 但是 再次单击同一行不会取消选择该行 如何使行选择在选定和未选定之
  • Django 登录不重定向到索引

    我有一个登录屏幕 在成功进行身份验证后 它应该在同一基本 URL 上显示用户详细信息 这些天它一直工作得很好 突然间它抛出 302 响应代码HTTP POST login 302 0 60 127 0 0 1 53864 当输入正确的用户名