Code前端首页关于Code前端联系我们

在 Django 中渲染 HTML 表单(GET 和 POST)

terry 2年前 (2023-09-24) 阅读数 51 #后端开发

Django 通常被称为“拥有电池的框架”,因为它对所有内容都有默认设置,并且具有可以帮助任何人快速开发网站的功能。说到表单,在 HTML 中,表单是...中的元素集合,它允许访问者执行诸如输入文本、选择选项、操作对象或控件,然后将信息发送回服务器等操作。基本上,它是用于处理任何目的的数据集合,包括将其存储在数据库中或从数据库检索数据。 Django 支持所有类型的 HTML 表单,并将其中的数据呈现到视图中,以便使用各种逻辑操作进行处理。

Django 还为 Django Forms 提供内置功能,就像 Django Models 一样。您可以在 Django 中创建表单并使用它们以方便的方式从用户获取数据。要开始使用表单,您需要熟悉表单中的 GET 和 POST 请求。

  • GET: 相比之下,GET 将提交的数据组装成字符串,并使用它形成 URL。 URL 包含数据要发送到的地址以及数据键和值。如果您搜索 Django 文档,您可以看到这一点,它将生成 docs.djangoproject.com/search/?q=f... 形式的 URL。
  • POST: 任何可用于更改系统状态的请求(例如更改数据库的请求)都必须使用POST。

在 Django 说明中渲染 HTML 表单

使用示例说明Django 表单。考虑一个名为 geeksforgeeks 的项目,其中有一个名为 geeks 的应用程序。

让我们创建一个简单的 HTML 表单来展示如何输入用户的数据并在视图中使用它。在 geeks > templates > home.html

<form action = "" method = "get">
	<label for="your_name">Your name: </label>
	<input id="your_name" type="text" name="your_name">
	<input type="submit" value="OK">
</form>

中输入以下代码

<form action = "" method = "get">
	<label for="your_name">Your name: </label>
	<input id="your_name" type="text" name="your_name">
	<input type="submit" value="OK">
</form>

现在要按照我们的观点呈现它,我们需要更改 geeks 应用程序的 urls.py。在 geeksforgeeks > urls.py 中输入以下代码

from django.urls import path

# importing views from views..py
from .views import geeks_view

urlpatterns = [
	path('', home_view ),
]

现在让我们进入 home_view 并开始检查如何获取数据。 Django 中 HTML 表单中的所有数据都作为 JSON 对象传输,称为请求。首先,我们创建一个视图,然后我们将尝试所有方法从表单中获取数据。

from django.shortcuts import render

# 在此处创建您的视图
def home_view(request):

	# 视图的逻辑将在这里实现
	return render(request, "home.html")

一切准备就绪后,让我们运行Python的manage.py运行时并检查主页上是否存在表单。

Django 中呈现 HTML 表单(GET 和 POST)

默认情况下,每个用 HTML 编写的表单都会向应用程序的后端发送 GET 请求。 GET 请求通常使用 URL 中的查询来工作。让我们使用上面的表格来演示这一点,在表格中填写您的姓名,然后看看会发生什么。

Django 中呈现 HTML 表单(GET 和 POST)

上面的URL已将name属性添加到input标签中,并且名称被输入到表单中。 这就是 GET 请求的工作方式,无论它们将添加到 URL 以将数据发送到应用程序后端的输入数量如何。让我们检查一下如何最终将这些数据获取到我们的视图中,以便我们可以根据输入应用逻辑。在views.py

from django.shortcuts import render

# 在此处创建您的视图
def home_view(request):
	print(request.GET)
	return render(request, "home.html")

现在,当我们填写表单时,我们可以在终端中看到如下输出:

Django 中呈现 HTML 表单(GET 和 POST)

request.GET返回一个请求字典,可以像任何其他Python字典一样访问它,最后使用它的数据来应用一些逻辑。同样,如果传输方式是POST,则可以使用request.POST作为查询字典,在视图中渲染表单中的数据。

home.html

<form action = "" method = "POST">
	{% csrf_token %}
	<label for="your_name">Your name: </label>
	<input id="your_name" type="text" name="your_name">
	<input type="submit" value="OK">
</form>

请注意,每次我们创建表单请求时,出于安全原因,Django 都会要求您将 {% csrf_token %} 添加到表单中。现在,在views.py中,让我们检查一下request.POST有哪个。

from django.shortcuts import render

# 在此处创建您的视图
def home_view(request):
	print(request.POST)
	return render(request, "home.html")

当我们提交表格时,它会显示如下数据。

Django 中呈现 HTML 表单(GET 和 POST)

通过这种方式,人们可以使用这些数据来查询数据库或使用一些逻辑操作对其进行处理,并使用上下文字典将其传递给模板。

作者:海勇
来源:稀土掘金

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门