【问题标题】:How can we construct custom URLs in HTML form with GET method?我们如何使用 GET 方法以 HTML 形式构建自定义 URL?
【发布时间】:2014-11-27 09:48:23
【问题描述】:

我正在使用 Django 制作网站。我正在使用以 GET 作为方法的 HTML 表单。

问题是默认情况下get url是这样的: /search?name=user&place=place

但我希望它是这样的: 我的站点/搜索/用户/地点

如何做到这一点?

【问题讨论】:

  • 这些问题不相关。虽然其他问题的 OP 想知道他如何找到网站的域名,但我想为 GET 请求提供一个看起来干净的 url。

标签: html django get


【解决方案1】:

使用 GET 方法通过网页发送数据。这意味着可以随时复制和重新检查 URL。

【讨论】:

【解决方案2】:

您可以在浏览器中执行此操作的唯一方法是使用 Javascript。您将需要从表单内容构建 URL。在对 URL 的值进行编码时,您可能会犯很多错误。您应该问为什么要这样做,而不是像表单那样使用 QUERY_PARAMS。

用 Django 解码并不难,它们只是 URL 模式中的变量,但除非你有某种惊天动地的新技术,否则你应该让浏览器将它们发送给你,而不是使用 JS 手工制作 URL .

【讨论】:

    【解决方案3】:

    使用 get 请求 immo 更好,但如果您想要类似:my_site/search/user/place 这很容易,您只需在 url 中定义变量并在函数中获取参数。

    您可以在django documentation找到更多详细信息

    【讨论】:

    • 我只将它用于 GET。我能够从 URL 中取出参数并在视图中使用它。但只有当我明确使用该 URL 来获取页面时,它才会起作用。当我希望使用 HTML 表单获取请求时,就会出现问题。默认情况下,他们会构建类似 my_site/search?name=user&place=place 的 URL。
    • 您可以使用 POST,获取参数并重定向到您想要的 url...您的 GET 可以在哪里提供服务
    【解决方案4】:

    为什么不使用 POST 作为方法并从 request.POST 中检索视图中的参数?这样它们就不会出现在您的网址中。

    另外,如果您期待结果列表,我建议您使用 views.generic 中的 ListView,并在 dispatch() 方法中检索您的参数,根据这些参数过滤用户模型(我猜) .

    【讨论】:

    • 因为 POST 不是一个合适的方法。我正在尝试从特定地点获取具有特定名称的人员列表。
    • 这正是 ListView 可以做到的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-27
    • 2018-06-23
    • 2022-11-01
    • 2023-01-15
    相关资源
    最近更新 更多