关于POST和GET请求的简单问题

时间:2019-02-15 21:45:14

标签: python django request

我刚刚通过遵循senddex教程开始学习Django。在课程中,我们向数据库中添加了一个User模型,并在views.py文件中创建了一个函数:

def register(request):
    if request.method == "POST":
        form = UserCreationForm(request.POST)
        if form.is_valid():#si les champs sont OK : 
            user = form.save()
            login(request, user)
            return redirect("main:homepage")
        else: 
            for msg in form.error_messages: 
                print(form.error_messages[msg])

但是在这段代码中,我不理解Django如何知道request.method是True还是False。是因为我在模板中创建了带有“提交”按钮的表单吗?

2 个答案:

答案 0 :(得分:0)

由于我们没有您的HTML,但总的来说,无法确切说明您的情况

  • 创建HTML表单时,可以按照<form method="POST"></form><form method="GET"></form>指定一种方法。如果未指定,则默认为GET。
  • 提交表单时,它使用指定类型的http请求发送数据。这就是Django正在阅读的内容。

答案 1 :(得分:0)

在这种情况下,request.method仅表示用于访问视图的HTTP方法。例如,您的register函数可能被分配了url配置,例如:url(r'^register/', views.register),该配置将传入的HTTP请求映射到您的视图。如果您的Web表单带有“提交”按钮,则可能是Web应用程序代码正在向您的Web服务器提交HTTP POST请求。

Django会自动为您构造request对象,因此您可以在视图中检查如何针对Web服务器发出请求。有关请求中还包含其他内容的更多信息,请检查Django docs