django学习08---Form表单提交

一、表单的基本介绍

html中表单基本格式:

"" method=""> 用户名:type="text" name="username" value="用户名" > 密码:type="password" name="password" value="密码" > type="submit" value="提交">

这里写图片描述

什么是表单:

  表单是HTML中用于提交数据给服务器的一个标签,所有的表单元素(input/textarea/button…)都要放在form标签当中.然后有以下参数:
1. formmethod参数用于设置表单的提交方式,默认使用POST
2. action用于设置表单的提交url,如果不写或者保持空字符串,那么将使用当前的URL。

GET和POST:

  1. GET:GET如其名,是从服务器获取数据,不会更改服务器的状态和数据,在URL中携带参数发送给服务器。
  2. POST则是将一定量的数据发送给服务器,一般会更改服务器的数据。
  3. POST方法的参数不能在URL当中看到,他是通过body参数传递给服务器的,所以相对GET方法直接能在URL当中看到传递的参数,显得更加安全一些.当然,也不能简单的判定POST方法比GET方法更安全,要使网站保持安全,需要做更多的安全处理。

二、django中form表单提交实例

目录结构:
django学习08---Form表单提交_第1张图片
首先在settings.py中添加app books
python版本2.7如果使用的3.5版本部分地方可能需要修改
(1)urls.py

from django.conf.urls import url
from django.contrib import admin

from books import views
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^$', views.index, name="index_page"),
    url(r'^login/$', views.login, name="login_page"),  #登录页面
    url(r'^register/$', views.register, name="register_page"), #注册页面
]

(2)models.py

# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import models

# Create your models here.
class UserModel(models.Model):   #创建userModel表  用户表
    username = models.CharField(max_length=50)
    password = models.CharField(max_length=50)
    def __unicode__(self):
        return self.username

书写完后在Terminal命令行中进行初始化

python manage.py makemigrations
python manage.py migrate

(3)login.html


<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登录页面title>
head>
<body>
    <form method="post">
    {% csrf_token %} 
        <input type="text" name="username">
        <input type="password" name="password">
        <input type="submit" value="提交">
    form>
body>
html>

这里写图片描述
(4)views.py

# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.shortcuts import render,reverse
from .forms import LoginForm
from django.http import HttpResponse,HttpResponseRedirect
from models import UserModel
from django.db import models

def login(request):
    if request.method == "GET":  #如果提交方式为GET即显示login.html
        return render(request, "login.html")
    else:    #如果提交方式为POST
        username = request.POST.get("username", None)
        password = request.POST.get("password", None)
        userModel = UserModel.objects.filter(username=username, password=password).first() #数据库验证账号
        if userModel:  #如果存在则返回欢迎浏览书店,否则返回用户名或密码错误  
            return HttpResponse("欢迎浏览书店!")  
        else:
            return HttpResponse("用户名或密码错误")

运行manage.py
django学习08---Form表单提交_第2张图片
django学习08---Form表单提交_第3张图片
再次运行即ok

你可能感兴趣的:(Python,django,html,django,表单,python)