我正在尝试建立一个供我的同事使用的基本论坛站点。问题是当我尝试登录该站点时,没有发送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
答案 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_REFUSED
或 ERR_EMPTY_RESPONSE
。事实证明,我在我的 Django 应用程序上启用了 redis
缓存,但 redis-server
没有打开。启动后,一切正常。