Django 表单提交方式的选择

2023-04-11 00:00:00 提交 方式 表单

在 Django 中,表单的提交方式一般有两种,分别是 GET 和 POST。

GET 方式的特点是参数都附加在 URL 后面,可以被浏览器直接缓存;而 POST 方式则是将参数放在 HTTP 请求的消息体中,相对安全一些。

一般情况下,如果是使用表单来获取数据且不希望数据被浏览器缓存,则应该使用 POST 方式提交。

以下是一个简单的 Django 表单提交的例子:

表单 HTML 代码:

<form action="/submit" method="POST">
  {% csrf_token %}
  <label for="name">Name:</label>
  <input type="text" id="name" name="name" required>
  <br>
  <label for="email">Email:</label>
  <input type="email" id="email" name="email" required>
  <br>
  <button type="submit">Submit</button>
</form>

在 Django 中,需要创建一个 View 来处理表单提交的请求,以下是一个简单的例子:

from django.shortcuts import render
from django.http import HttpResponse

def submit(request):
    if request.method == 'POST':
        name = request.POST.get('name')
        email = request.POST.get('email')
        # 处理提交的数据
        return HttpResponse('Success')
    else:
        return render(request, 'submit.html')

在 View 中,我们首先判断请求的方法是否为 POST,如果是,则获取到提交的数据并进行处理,最终返回一个成功的响应;如果不是 POST 方法,则返回渲染后的表单页面。

需要注意的是,在处理 POST 请求时,需要通过 request.POST.get('input_name') 的方式获取到对应的 input 值。同时,为了防止恶意提交和跨站请求伪造(CSRF)攻击,需要添加 {% csrf_token %} 标签,并在处理 POST 请求时进行验证。

相关文章