• Django 处理处理表单


    除非你计划构建的网站和应用只是发布内容而不接受访问者的输入,否则你将需要理解并使用表单
    
    
    HTML 表单:
    
    在HTML中,表单的作用是收集标签中的内容,<form>...</form> 中间可以由访问者添加类似于文本,选择,
    
    或者一些控制模块等等,然后 这些内容将会被送到服务端。
    
    node2:/django/mysite/news/templates#cat index.html
    <html>
    	<head>		
    <title>Index</title>
    		<link rel='stylesheet' type='text/css' href='/static/news/Css/Index/index.css'/>
    	</head>
    	<body>
    		<h1>布丁运维管理平台</h1>
    		<!--图片标签-->
    		<img class="img_bk" src="/static/news/scan.jpg"/>
    		<!--表单提交-->
    		<form action="/main/" method="post" >
    			<table cellspacing="0" cellpadding="0">
    				<tr>
    					<td class="td1">用户名:</td>
    					<td><input type="text" name="username"/></td>
    					<td class="td3"></td>
    					<td class="td4"></td>
    				<tr/>
    				<tr>
    					<td class="td1">密码:</td>
    					<td><input type="password" name="password"/></td>
    					<td class="td3"></td>
    					<td class="td4"></td>
    				<tr/>
    				<!-- <tr> -->
    					<!-- <td class="td1">验证码:</td> -->
    					<!-- <td>   <input type='text' name='code' /></td> -->
    					<!-- <td class="td3"><img src="__APP__/Public/code" οnclick='this.src=this.src+"?"+Math.random()'/></td> -->
    					<!-- <td class="td4"></td> -->
    				<!-- </tr> -->
    				<tr>
    					<td class="td1"></td>
    					<td><input type="submit" value="" name="imgLogin" /></td>
    					<td class="td3"></td>
    					<td class="td4"></td>
    				</tr>
    			</table>
    		</form>
    	</body>
    </html>
    
    
    与<input> 元素一样,一个表单必须指定两样东西:
    
    1.目的地:响应用户输入数据的URL
    
    2.方式:发送数据的HTTP方法
    
    例如:Django Admin 站点的登陆表单包含几个<input> 元素:
    
    
    type="text" 用于用户名,type="password" 用于密码,type="submit" 用于“Log in" 按钮。它还包含一些用户看不到的隐藏的文本字段,Django 使用它们来决定下一步的行为。
    
    它还告诉浏览器表单数据应该发往<form> 的action 属性指定的URL —— /admin/,而且应该使用method 属性指定的HTTP 方法 —— post。
    
    当触发<input type="submit" value="Log in"> 元素时,数据将发送给/admin/。
    
    
    
    
    
    
    GET和POST:
    
    处理表单时只会用到GET和POST 方法:
    
    Django 的登陆表单使用POST方法,在这个方法中浏览器组合表单数据,
    
    对它们进行编码以用于传输,将它们发送到服务器然后接收它的响应。
    
    相反,GET组合提交的数据为一个字符串,然后使用它来生成一个URL。
    
    Django 在表单中的角色
    
    处理表单是一件很复杂的事情,考虑一下Django的Admin站点,不同类型的大量数据项需要在一个表单中准备好,
    
    渲染成HTML,使用一个方便的界面编辑,返回服务器,验证并清除,然后保存或者向后继续处理。
    
    
    Django 中的表单:
    
    我们已经简短的讲述HTML表单,但是HTML的<form> 只是其机制的一部分。
    
    在一个web应用中,"表单"可能指HTML <form>、或者生成它的Django 的Form、或者提交时发送的结构化数据、或者这些部分的总和。
    
    
    构建一个表单:
    
    需要完成的工作:
    
    假设你想在你的网站上创建一个简单的表单,以获得用户的名字,你需要这样的模板:
    
    <form action="/your-name/" method="post">
        <label for="your_name">Your name: </label>
        <input id="your_name" type="text" name="your_name" value="{{ current_name }}">
        <input type="submit" value="OK">
    </form>
    
    
    这告诉浏览器发送表单的数据到URL /your-name/,并使用POST 方法。
    
    它将显示一个标签为"Your name:"的文本字段,和一个‘OK’按钮。
    
    
    你将需要一个视图来渲染这个包含HTML表单的模板,并提供合适的current_name 字段
    
    
    当表单提交时,发往服务器的POST 请求将包含表单数据。
    
    现在你还需要一个对应/your-name/ URL的视图,它在请求中找到正确的键/值对,然后处理它们。
    
    这是一个非常简单的表单,实际应用中,一个表单可能包含几十上百个字段,其中大部分需要预填充,
    
    
    而且我们预料到用户景来会编辑
    
    
    在Django中构建一个表单:
    
    Form类
    
    我们已经计划好了我们的HTML,表单应该呈现的样子。在Django中,我们的起始点是这里:
    
    node2:/django/mysite/news#cat forms.py
    from django import forms
    
    class UploadFileForm(forms.Form):
        title = forms.CharField(max_length=50)
        file = forms.FileField()
    	
    它定义一个Form类,只带有一个字段(your_name)。我们已经对这个字段使用一个友好的标签,
    
    当渲染时它将出现在<label>中
    
    
    字段允许的最大长度通过max_length 定义。 它完成两件事情,首先.
    
    它在HTML 的<input> 上放置一个maxlength="100" 
    
    Form的实例具有一个is_valid() 方法,
    
    
    
    视图:
    
    发送给Django 网站的表单数据通过一个视图处理,一般和发布这个表单的是同一视图,
    
    这允许我们重用一些相同的逻辑
    
    要操作一个通过URL发布的表单,我们要在视图中实例表单。
    
    如果访问视图的是一个GET请求,它将创建一个空的表单实例并将它放置到要渲染的模板的上下文中。
    
    这是我们在第一次访问该URL时预期发生的情况。

  • 相关阅读:
    09.回文数
    08.字符串转换位整数
    背景图片自适应
    认证 (authentication) 和授权 (authorization) 的区别
    vue-组件之间传值
    数组对象去重
    二进制数转换十进制数
    node-删除对象中指定属性失效问题-JSON.parse实例化
    Vue-动态修改数组
    正则遇到的问题集合
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13349398.html
Copyright © 2020-2023  润新知