Django表单未发送POST请求,并且网站被冻结

时间:2019-08-19 11:29:40

标签: python django

我正在尝试建立一个供我的同事使用的基本论坛站点。问题是当我尝试登录该站点时,没有发送POST请求(由终端显示),并且整个网站都没有响应。实际上,它位于另一个浏览器选项卡中,在我键入此内容时会无限缓冲。

我遵循Corey Schafer的Django教程来奠定网站的基础,因为我从未对Django做过任何事情。我完成了该系列教程,该站点正常运行(减去密码重置的电子邮件)。在完成教程之后,我通过django-taggit将标记功能添加到了表单中。

我不得不等到IT主管可以将一些文件输入公司站点以访问电子邮件(通过SendGrid)之后,但最终我能够向自己发送一封密码重置电子邮件。我成功重置了密码,这就是开始出现问题的地方。

我想改回密码,所以我再次进行了此过程,但是这次,当我按下密码重置页面上的“发送电子邮件”按钮时,缓冲图标(在Chrome上)开始向后退,不会停止。发生这种情况时,我没有检查控制台。无论哪种方式,我都试图通过单击导航栏上的链接转到网站上的其他地方,但是所有链接都没有响应。所做的所有工作就是清除表单。

现在,每次我尝试发送POST请求时,都会发生这种情况,并且整个站点都无法使用。我无法登录,发布,更改密码或创建帐户。

我试图通过清除浏览器的缓存,刷新数据库并检查控制台以查看是否遇到错误来解决此问题。控制台没有显示任何错误。实际上,它仅显示最后发送的GET请求。在登录的情况下,最后一个请求显示:

[2019年8月19日]“ GET / login / HTTP / 1.1” 200 5214

请注意,我大约在这个时候尝试开始学习SQL,并且我在同一台计算机上安装了MySQL。它与被占用的端口有关吗?如果有任何帮助,我正在localhost:8000上工作。

我需要弄清楚为什么不发送POST请求的原因,但是我不知道是什么原因导致了此问题,因为没有错误或异常。

编辑*忘记添加:

我也尝试过重新启动服务器并检查迁移,但是这些动作都没有任何效果。我还尝试创建一个新用户,但再次失败。

我还打开了该代码的既有功能版本,但是即使失败了,所以这可能是硬件问题。

编辑#2:

这是“登录”页面的HTML,我扩展了不影响登录表单的基本HTML模板,并且我还使用了Corey Schafer的教程所指导的Crispy Forms。这是HTML:


<div class='content-section'>
    <form method="POST">
        {% csrf_token %}
        <fieldset class="form-group">
            <legend class="border-bottom mb-4">
                Team Member Login
            </legend>
            {{ form|crispy }}
        </fieldset>

        <div class="form-group">

            <button class="btn btn-outline-info" type="submit">Log In</button>
            <small class="text-muted ml-2">
                <a href="{% url 'password_reset' %}">Forgot Password?</a>
            </small>

        </div>

    </form>

</div>

编辑#3:

这是配置视图的方式...

path('login/',
     auth_views.LoginView.as_view(template_name='users/login.html'),
     name='login')

编辑#4:

我能够成功注册一个新用户,甚至可以从登录页面登录他们,但是在第二次尝试将他们注销并尝试重新登录后,问题再次出现。我从控制台收到一个POST请求。 这是控制台输出:

System check identified no issues (0 silenced).
August 19, 2019 - 15:57:16
Django version 2.2.4, using settings 'django_project.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
[19/Aug/2019 15:57:24] "GET / HTTP/1.1" 200 3890
Not Found: /favicon.ico
[19/Aug/2019 15:57:26] "GET /favicon.ico HTTP/1.1" 404 5049
[19/Aug/2019 15:57:30] "GET /register/ HTTP/1.1" 200 6525
[19/Aug/2019 15:57:47] "POST /register/ HTTP/1.1" 302 0
[19/Aug/2019 15:57:47] "GET /login/ HTTP/1.1" 200 5389
[19/Aug/2019 15:57:54] "POST /login/ HTTP/1.1" 302 0
[19/Aug/2019 15:57:54] "GET / HTTP/1.1" 200 3979
[19/Aug/2019 15:57:59] "GET /profile/ HTTP/1.1" 200 5288
[19/Aug/2019 15:58:04] "GET /logout/ HTTP/1.1" 200 4055

3 个答案:

答案 0 :(得分:0)

您的表单未指定操作。因此,我假设在提交表单时,正在加载当前页面以处理表单提交。

如果您使用的是基于方法的视图

def viewHandle(request):
    if request.method == "POST":
       return something

如果您使用的是基于类的视图

class HomePage(View):
    def post(self, request):
        return something
    def get(self, request):
        return something

答案 1 :(得分:0)

发生在Google Chrome中,但可以在Safari中使用。因此,我检查了我是否有待处理的Chrome更新。之后,它就像一种魅力。

答案 2 :(得分:0)

嗯。我有一个类似的问题,Django 会挂在我所做的任何 POST 请求和随后的 GET 请求上。特别是在登录页面和管理员上。浏览器只会说 ERR_CONNECTION_REFUSEDERR_EMPTY_RESPONSE。事实证明,我在我的 Django 应用程序上启用了 redis 缓存,但 redis-server 没有打开。启动后,一切正常。