Django:HttpResponseRedirect 不起作用

2023-11-25

我是 Python/Django 和整体编程的新手。我需要有关 HttpResponseRedirect 的帮助,因为它在我的登录视图中不起作用。它确实可以在我的主视图文件中工作,但不是我想要的方式。

我没有重定向到所需的页面(“/”),而是只在同一页面上看到此内容:

内容类型:text/html;字符集=utf-8 位置:/

用户实际上已登录,但仍停留在同一页面上。因此,如果我手动转到所需的页面,我会看到我已登录。

这是相关的代码片段。我到处都用我自己的观点。我希望通过这种方式进行练习和更好的理解。

Urls.py

from django.conf.urls import patterns, include, url
from django.conf.urls.static import static
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from django.contrib import admin
from backend import settings
admin.autodiscover()

urlpatterns = patterns('',
    url(r'^login/', 'backend.views.login', name = 'login'),
    url(r'^logout/', 'backend.views.logout', name = 'logout'),
    url(r'^$', 'backend.views.dash', name = 'dash'),
    url(r'^admin/', include(admin.site.urls)),
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

urlpatterns += staticfiles_urlpatterns()

Views.py

from dashboard.dashviews import left, right, topright
from authentication.authviews import LoginView, LogoutView
from django.shortcuts import render
from django.http import HttpResponseRedirect
from django.contrib.auth.decorators import login_required

@login_required(login_url='/login/')
def dash(request):
    return render(request, 'dash_template.html', 
        {'left': left.dash_left(request), 
         'right': right.dash_right(), 
        'topright': topright.top_right(request)})

def login(request):
    if not request.user.is_authenticated():
        return render(request, 'login.html', {'login': LoginView.login_view(request)})
    else:
        return HttpResponseRedirect('/')

def logout(request):
    return render(request, 'logout.html', {'logout': LogoutView.logout_view(request)}) and HttpResponseRedirect('/login/')

登录视图.py

from django.contrib import auth
from django.http import HttpResponseRedirect

def login_view(request):
    username = request.POST.get('username', '')
    password = request.POST.get('password', '')
    user = auth.authenticate(username=username, password=password)
    if user is not None and user.is_active:
        # Correct password, and the user is marked "active"
        auth.login(request, user)
        # Redirect to dashboard
        return HttpResponseRedirect('/')
    else:
    # Show a message     
        return 'Please enter your username and password below.'

login.html - 简单表单

<center>

<p>{{ login }}</p>

  {% if form.errors %}
    <p class="error">Sorry, that's not a valid username or password</p>
  {% endif %}


  <form action="./" method="post">
        <table border="0">
    <tr>
    <td>
    <label for="username">Username:</label>
    </td>
    <td>
    <input type="text" name="username" value="" id="username">
    </td>
    </tr>
    <tr>
    <td>
    <label for="password">Password:</label>
    </td>
    <td>
    <input type="password" name="password" value="" id="password">
    </td>
    </tr>
    </table>
    <input type="submit" value="login" />
    <input type="hidden" name="next" value="/" />
    {% csrf_token %}
  </form>

</center>

我按照 Django 书籍教程进行操作,根据它,一切都应该可以正常工作。正如您所看到的,我还尝试在表单中使用“下一个”隐藏字段,但这也不起作用。任何帮助,将不胜感激。我想知道我在这里缺少什么。谢谢!


您在 html 中看到“Content-Type: text/html; charset=utf-8 Location: /”的原因是您返回 HttpResponse 对象作为要在响应中呈现的上下文数据的一部分,而不是作为实际反应。你的注销看起来也有点奇怪。但要使用你目前拥有的东西:

改变你的看法.py

if not request.user.is_authenticated():
    # LoginView.login_view will return a HttpResponse object
    return LoginView.login_view(request)
else:
    ...

然后更改 LoginView.login 中的视图以始终返回您想要的 Response 对象(重定向或您想要呈现的页面)

def login_view(request):
    # if the request method is POST the process the POST values otherwise just render the page
    if request.method == 'POST':
        username = request.POST.get('username', '')
        password = request.POST.get('password', '')
        user = auth.authenticate(username=username, password=password)
        if user is not None and user.is_active:
            # Correct password, and the user is marked "active"
            auth.login(request, user)
            # Redirect to dashboard
           return HttpResponseRedirect('/')
        else:
            # Show a message     
            err_msg = 'Please enter your username and password below.'
    return render(request, 'login.html', {'login': err_msg})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django:HttpResponseRedirect 不起作用 的相关文章

  • 从内存地址创建python对象(使用gi.repository)

    有时我需要调用仅存在于 C 中的 gtk gobject 函数 但返回一个具有 python 包装器的对象 之前我使用过基于 ctypes 的解决方案 效果很好 现在我从 PyGtk import gtk 切换到 GObject intro
  • DynamodB:如何更新排序键?

    该表有两个键 filename 分区键 和eventTime 排序键 我要更新eventTime对于某些filename Tried put item and update item 发送相同的filename与新的eventTime但这些
  • Python:json_normalize pandas 系列给出 TypeError

    我在 pandas 系列中有数万行像这样的 json 片段df json IDs lotId 1 Id 123456 date 2009 04 17 bidsCount 2 IDs lotId 2 Id 123456 date 2009 0
  • 将整数系列转换为交替(双元)二进制系列

    我不知道如何最好地表达这个问题 因为在这里谷歌搜索和搜索总是让我找到更复杂的东西 我很确定这是基本的东西 但对于我的生活来说 我找不到一个好的方法来做到这一点下列 给定一个整数序列 比如说 for x in range 0 36 我想将这些
  • 如何用函数记录一个文件?

    我有一个带有函数 lib py 但没有类的python 文件 每个函数都有以下样式 def fnc1 a b c This fonction does something param a lalala type a str param b
  • 使用 Tkinter 打开网页

    因此 我的应用程序需要能够打开其中的单个网页 并且它必须来自互联网并且未保存 特别是我想使用 Tkinter GUI 工具包 因为它是我最熟悉的工具包 最重要的是 我希望能够在窗口中生成事件 例如单击鼠标 但无需实际使用鼠标 有什么好的方法
  • Python speedtest.net,或等效的[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 是否有一个 Python 库可以实现 SpeedTest net 测试或等效的互联网连接速度测试 GitHub上有一个项目叫速度检查 https gi
  • 在 django 中处理图像上传表单:何时使用 save()、chunks() 和 clean_data?

    我已经使用以下代码成功上传了图像 views py from django conf urls defaults import from django http import HttpResponse HttpResponseRedirec
  • 为什么需要设置WORKON_HOME环境变量?

    我已经有一段时间没有使用 python 虚拟环境了 但我也安装了虚拟环境包装器 我的问题是 在文档页面中它说要这样做 export WORKON HOME Envs mkdir p WORKON HOME source usr local
  • 了解 Python 2.7 中的缩进错误

    在编写 python 代码时 我往往会遇到很多缩进错误 有时 当我删除并重写该行时 错误就会消失 有人可以为菜鸟提供 python 中 IndentationErrors 的高级解释吗 以下是我在玩 CheckIO 时收到的最近 inden
  • Python:导入模块一次然后与多个文件共享

    我有如下文件 file1 py file2 py file3 py 假设这三个都使用 lib7 py lib8 py lib9 py 目前 这三个文件中的每一个都有以下行 import lib7 import lib8 import lib
  • Django - 在长时间处理期间显示加载消息

    我怎样才能显示请稍等从 django 视图加载消息 我有一个 Django 视图 需要花费大量时间对大型数据集执行计算 当进程加载时 我想向用户呈现一条反馈消息 例如 旋转加载动画 gif 或类似消息 在尝试了布兰登和穆拉特提出的两种不同方
  • 在 GraphQL 服务器中实现访问控制的好模式是什么?

    背景 我有一组模型 包括用户和各种其他模型 其中一些模型包含对用户的引用 我公开这些模型 以便通过 GraphQL API 生成的查询Graffiti https github com RisingStack graffiti 由 Mong
  • 如何创建增量加载网页

    我正在编写一个处理大量数据的页面 它会永远持续到我的结果页面加载 几乎无限 因为返回的数据太大了 因此 我需要实现一个增量加载页面 例如 url 中的页面 http docs python org http docs python org
  • 如何检测一个二维数组是否在另一个二维数组内?

    因此 在堆栈溢出成员的帮助下 我得到了以下代码 data needle s which is a png image base64 code goes here decoded data decode base64 f cStringIO
  • SQLAlchemy 与 count、group_by 和 order_by 使用 ORM

    我有几个函数需要使用 count group by 和 order by 进行一对多连接 我使用 sqlalchemy select 函数生成一个查询 该查询将返回一组 id 然后我对其进行迭代以对各个记录执行 ORM 选择 我想知道是否有
  • PyQt5按钮lambda变量变成布尔值[重复]

    这个问题在这里已经有答案了 当我运行下面的代码时 它显示如下 为什么 x 不是 x 而是变成布尔值 这种情况仅发生在传递到用 lambda 调用的函数中的第一个参数上 错误的 y home me model some file from P
  • 检查 IP 地址是否在给定范围内

    我想检查一下是否有IP180 179 77 11位于特定范围之间 例如180 179 0 0 180 179 255 255 我编写了一个函数 它将每个 IP 八位字节与其他八位字节进行比较 def match mask IP min ip
  • PyObjC + Python 3.0 问题

    默认情况下 Cocoa Python 应用程序使用默认的 Python 运行时版本 2 5 如何配置我的 Xcode 项目以便它使用较新的 Python 3 0 运行时 我尝试用新版本替换项目中包含的Python framework 但它不
  • 使用 python 将 CSV 文件上传到 Microsoft Azure 存储帐户

    我正在尝试上传一个 csv使用 python 将文件写入 Microsoft Azure 存储帐户 我已经发现C sharp https blogs msdn microsoft com jmstall 2012 08 03 convert

随机推荐

  • 打开项目时出现“无法创建 C# 2017 编译器”错误消息

    我有 Visual Studio 2017 社区版 我有一个使用 Visual Studio 2015 创建的 C 项目 当我尝试在 VS 2017 中打开该项目时 出现错误消息提示 微软 Visual Studio 无法打开项目 data
  • 对于数组,在javascript中使用map()和reduce()代替forEach()是否更有效?

    1 众所周知 map 和reduce 没有副作用 如今 我们的手机也有了多核 那么使用它们是不是更有效率呢 2 另一方面 在大多数浏览器上只有1个线程供js执行 因此map 和reduce 是为服务器端脚本准备的吗 我今天刚刚测试了这一点
  • 来自 UIImage 的数据 URL / PNG

    我有一个带有 UIImage 的 iPhone 程序 此 UIImage 需要传输到 UIWebView 中的 javascript Image 对象 我想这可以通过使用我发送到 UIWebView 的数据 url 来完成 如下所示 wvi
  • 在 if 语句中使用 && 运算符

    我有三个变量 VAR1 file1 VAR2 file2 VAR3 file3 如何使用和 if 语句中的 运算符如下所示 if f VAR1 f VAR2 f VAR3 then fi 当我编写这段代码时 它给出了错误 正确的方法是什么
  • 获取 lambda 表达式的 MethodInfo

    我知道我问的很奇怪 但只是为了好玩 是否有可能得到MethodInfo对于 lambda 表达式 我正在追求这样的事情 Func
  • iOS 5 中如何防止 Core Data 重复?

    我遇到了问题 周末我一直在做一个项目 我从 web 服务中提取一个大的 xml 它基本上有 3 层 客户 经理 员工 都是分层的 因此 应用程序第一次运行时 它会提取此 xml 并对其进行解析 并创建 3 个相关实体 客户 经理和员工 中的
  • unittest.py 与trace.py 不能很好地配合 - 为什么?

    哇 今晚我发现 Python 单元测试是使用unittest模块不能很好地进行覆盖率分析trace模块 这是最简单的单元测试 在foobar py import unittest class Tester unittest TestCase
  • 初始化空ByteArray

    如何在 Kotlin 中初始化一个空的 ByteArray 每当我尝试这样做时 val asdfasdf ByteArray 当我稍后尝试使用 asdfasdf 时 我被告知需要初始化它 mVisualizer getWaveForm as
  • 我可以使用什么工具在浏览器中测试 :contains() CSS3 伪类?

    我正在尝试开发与 Selenium 一起使用的 CSS 选择器 我特别想使用伪类 contains 尽管 W3 有一个带有 contains 的 CSS3 草案 但最终版本似乎并未包含它 我正在使用 Chrome 的工具来帮助我检查 CSS
  • 使用 PyGtk 时 GUI 未从另一个线程更新

    我正在使用 PyGTK 构建 GUI 应用程序 我想从另一个线程更新 textview 小部件 但每次我尝试更新时该小部件都没有更新 我应该怎么做才能获得可靠的 GUI 更新 GTK 不是线程安全的 因此您不应简单地从其他线程调用 GUI
  • 在 Android Activity 中打开网页时出现 net::ERR_ACCESS_DENIED Android 错误 [重复]

    这个问题在这里已经有答案了 打开 Android 活动时 Android 网页显示 net ERR ACCESS DENIED 嵌入网页标签 我尝试在 Android Manifest 中提供权限
  • 如何在同一个shell中执行bash脚本

    我有一个 bash 脚本 它调用三个不同的命令 并且执行必须在一个 shell 中进行 我通过在每个命令后添加 来得到它 如下所示 CMD1 CMD2 CMD3 现在我需要的是 假设我在 MAC 机器上打开一个终端 所有命令都应该在打开的
  • 如何强制 go mod 接受声明其路径与其 go.mod 不同的模块?

    当我跑步时go mod tidy 它破坏了 因为我的项目导入的包使用路径导入了另一个包github com coreos bbolt 但是当它从此路径获取包时go mod说它的路径是go etcd io bbolt 问题是导入包和导入包都是
  • 如何以编程方式读取 MSI 文件内的属性?

    有没有办法读取里面的属性MSI file 例如 给定一个名为测试包 msi 我需要找到 productName PackageCode version 我将把它与 WMI 卸载一起使用 string objPath string Forma
  • 为什么在放弃泛型运算符时无法推断类型[重复]

    这个问题在这里已经有答案了 我读到 从 Java 7 开始 像第一个语句一样在右侧指定类型来创建集合是不好的风格 因为编译器可以从左侧推断类型 List
  • 方形拼图解决方案

    Question given an integer number n print the numbers from 1 up to n2 like this n 4 结果是 01 02 03 04 12 13 14 05 11 16 15
  • 函数调用中的 C++ 临时对象生命周期

    当我们通过原始指针或引用将临时智能指针管理的对象传递给函数时 标准是否保证该对象的生存期将延长到函数的生存期 include
  • JQuery JEditable - 如何禁用点击编辑

    我想知道您是否可以停止点击时编辑文本 我有一个单独的编辑按钮来使文本可编辑 这是我希望用户能够编辑文本的唯一方法 因此想要关闭单击编辑吗 有任何想法吗 布里特是对的 添加一个自定义事件 然后用按钮触发它 这是一些代码来解释它 自定义事件 i
  • 使用 N-API 将数据流式传输到 Node.js C++ 插件

    我正在为 NodeJS 构建一个 C 插件 我想将数据从 C 异步流式传输到 Node 我找到了这篇文章 https nodeaddons com streaming data into a node js c addon 然而 我想使用
  • Django:HttpResponseRedirect 不起作用

    我是 Python Django 和整体编程的新手 我需要有关 HttpResponseRedirect 的帮助 因为它在我的登录视图中不起作用 它确实可以在我的主视图文件中工作 但不是我想要的方式 我没有重定向到所需的页面 而是只在同一页