python框架-django中的表单类

一:表单类

一般我们在html中自己写的表单类似于下面的样子

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>表单</title>
</head>
<body>
    <form action="www.xxx.com" method="POST">

        username:<input type="text" placeholder="username" name="username">
        passowrd:<input type="password" placeholder="password" name="password">
        submit:<input type="submit">

    </form>
</body>
</html>

# 取值也是 request.POST.get("username")  request.POST.get("password") 

  表单类

from django import forms

class Login_Form(forms.Form):
    username = forms.CharField(label="你的名字",max_length=20)
    password = forms.CharField(label="你的密码",max_length=20)

  前端代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

    <form action="user/login/" method="post">
    {% csrf_token %}
    {{ form }}
    <input type="submit" value="Submit" />
</form>
</body>
</html>

  视图函数

from django.http import HttpResponse
from django.http import JsonResponse
from django.shortcuts import render
from .form_test import Login_Form

def form_test_view(request):   # 如果是post请求,将数据绑定到表单,直接存储在request.POST中,取值普通表单一样。
    if request.method == "POST":
        form = Login_Form(request.POST)
        if form.is_valid():
            # 检验数据的有效性       # 验证过的数据可以通过 form.cleaned_data取得,格式是一个字典       print(form.cleaned_data)           
            return HttpResponse("谢谢提交")
    else:        # 如果是get请求,创建表单实例,将表单中的字段,传递到login.html中,进行渲染,渲染成input文本输入框。
        form = Login_Form()
    return render(request,"login.html",{"form":form})

from django.conf.urls import url
from .views import index
from .views import form_test_view
urlpatterns = [
url(r"^index/",index),
url(r"^login",form_test_view)

]

二:csrf 跨站伪造攻击

原文地址:https://www.cnblogs.com/meloncodezhang/p/11789709.html

时间: 2024-12-12 14:22:48

python框架-django中的表单类的相关文章

Django框架开发中避免表单重复提交

Form表单做为web2.0时代的重要角色,也是我们与web网站进行数据交互的重要渠道,但是大家在web网站开发过程中,都会遇到一个问题,那就是如何避免表单重复提交,我们可不确定用户可在提交了一个表单后,是否有足够的耐心等待我们的程序加载完成,如果此时用户不耐烦的在前台重复刷新页面,那么就会造成数据重复提交.信息不准确,因此我们在程序设计时一定要规避这样的问题,接下来介绍一下在Django框架开发中如何避免此问题. 首先说明一下Http协议中两种非常常见的方法GET和POST. 1.GET方法往

Django中Form表单之字段详解

Django中的Form表单 1.背景 平时我们在书写form表单时,经常都是手动的去写一些input标签,让用户输入一些功能,进行一些校验的判断,等等.Django中的form表单就能够帮我们去实现这些功能,比较便捷. 2.Django form表单的功能 1.生成页面可执行的HTML标签 2.对应户的数据进行校验 3.保留上次输入的内容 3.先用普通方式手写一个注册功能 1.views.py文件中 # 注册 def register(request): error_msg = ""

python框架django中结合vue进行前后端分离

一.创建django项目 1.django-admin startproject mysite # 创建mysite项目 2.django-admin startapp app01# 创建app01应用  二.安装vue 安装vue-cli:npm install -g vue-cli (Vue-cli是Vue的脚手架工具,-g表示在全局下安装vue-cli) 安装webpack: npm install webpack -g  (包管理工具,主要是打包和解包用的) 创建项目:vue init

django中处理表单的经典流程

def form_process_view(request): if request.method == 'POST': # 请求为 POST,利用用户提交的数据构造一个绑定了数据的表单 form = Form(request.POST) if form.is_valid(): # 表单数据合法 # 进行其它处理... # 跳转 return redirect('/') else: # 请求不是 POST,构造一个空表单 form = Form() # 渲染模板 # 如果不是 POST 请求,则

关于django中前端表单提交那点事

正常开发的时候,提交表单后,报“'NoneType' object has no attribute 'split'”错误. 相关代码: <form action="/login" mothed="post"> <ol> <li><input name="username1" type="text" placeholder="请输入您的邮箱地址"/></

django中form表单post无法提交

报错403:Forbidden (CSRF token missing or incorrect.) 解决方法 方法一: 把settings.py文件中含有csrf那一行注释掉 方法二: 1.导入csrf_exempt包 1 from django.views.decorators.csrf import csrf_exempt 2.增加装饰器@csrf_exempt @csrf_exempt #增加装饰器,作用是跳过 csrf 中间件的保护 原文地址:https://www.cnblogs.c

2019.03.24 表单类

Form.form是一种内置的模板吧,它有自己设置的表单样式 可以引用它,但我觉得还是自己写会比较好吧 继承的是forms类了而不是models类了 然后就是表单得验证,也是用了内置得数据库叫做 authenticate,login就是存admin密码的那个 概述 表单既可以在模板页面利用HTML编写,也可以使用Django提供的表单类编写. 相关属性参考官网:https://docs.djangoproject.com/en/1.11/ref/forms/fields/ 实现熟悉的用户登录功能

【Python全栈-后端开发】Django进阶2-Form表单

Django进阶2-Form表单 Django的Form主要具有一下几大功能: 生成HTML标签(可以保留上次输入内容) 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 一.小试牛刀 1.创建Form类 在app01 文件夹下-->创建新的.py 文件 from django.forms import Form from django.forms import widgets from django.forms import fields class M

Django--分页器(paginator)、Django的用户认证、Django的FORM表单

分页器(paginator) >>> from django.core.paginator import Paginator >>> objects = ['john', 'paul', 'george', 'ringo'] >>> p = Paginator(objects, 2) >>> p.count #数据总数 4 >>> p.num_pages #总页数 2 >>> type(p.page