【问题标题】:Need help understand the behavior of URLs for a django website需要帮助了解 django 网站的 URL 行为
【发布时间】:2020-05-24 07:47:27
【问题描述】:

我正在编写一个具有以下功能的练习网站

1) 显示员工数据 (localhost:8000/payroll)
2) 添加员工 (localhost:8000/addemployee)
3) 编辑员工 (localhost:8000/editemployee)
4) 下载报告(localhost:8000/downloadreport)

下面的屏幕截图显示了发生的操作。

homepage

delete employee

我的 deleteemployee 视图的代码如下,如果删除成功,我使用渲染将用户带回我的主页(至少我认为它应该是这样工作的)。但是,如果您注意到 URL 从未更改为索引,即 localhost:8000/payroll,即使显示主页,删除员工 URL 仍会显示。我在这里做错了什么?

点击删除后的预期网址如下 http://127.0.0.1:8000/payroll/

点击删除后的实际网址如下 http://127.0.0.1:8000/payroll/deleteemployee?employee_id=32

Python 版本 -- 3.7 Django 版本 -- 3.0

 try:
    e = Employee.objects.get(employee_id = request.GET.get('employee_id'))
    e.delete()
    employee_list = Payroll.objects.select_related('employee_id')                  
    return render(request, 'index.html',{'employee_list' : employee_list })
 except Exception:
    return render(request, 'error.html',{'error':'Delete Operation Failed'})```



【问题讨论】:

  • 如果您想在客户端浏览器中更改 URL,您需要使用重定向:docs.djangoproject.com/en/3.0/topics/http/shortcuts/#redirect
  • 非常感谢!!!根据阅读文档,我知道渲染不正确。现在更改为 redirect('/payroll') 并且工作正常。
  • 我已添加我的评论作为答案,请接受。还要注意使用reverse 来生成url。

标签: python django


【解决方案1】:

您需要返回 redirect 来更改客户端浏览器中的 URL,而不是 render 响应。例如,

return redirect("/payroll")

但是,请注意,您应该使用reverse 来生成 URL,而不是对其进行硬编码。例如,

return redirect(reverse("myapp:payroll"))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-08
    • 2015-11-02
    • 2017-06-19
    相关资源
    最近更新 更多