调整form的输出格式:

  默认情况下form的格式化输出是基本table的样式的、但是django中还是为form提供发别的输出样式

  1、默认的table样式输出

<html>
<head>
<title>your name</title>
<meta charset="utf8"/>
</head> <body>
<form action={% url 'your-name' %} method="POST">
{% csrf_token %}
{{ form }} <!-- 这里采用的是django的默认输出方式 -->
<input type="submit" value="submit">
</form>
</body>
</html>
<html>
<head>
<title>your name</title>
<meta charset="utf8"/>
</head> <body>
<form action=/app01/yourname method="POST">
<input type='hidden' name='csrfmiddlewaretoken' value='gR8rgaARcg8F3GWX4igz8xE6EXTrdyr8QoVJpZVrG9Cc3ibgvz9FioIfPNTRUh59' />
<tr><th><label for="id_your_name">Your name:</label></th><td><input type="text" name="your_name" maxlength="100" required id="id_your_name" /></td></tr>
<input type="submit" value="submit">
</form>
</body>
</html>

  可以看到默认情况下输出内容以table中的行的方式输出

  2、把输出方式调整为p

<html>
<head>
<title>your name</title>
<meta charset="utf8"/>
</head> <body>
<form action={% url 'your-name' %} method="POST">
{% csrf_token %}
<!-- 用 p 的方式格式化输入 -->
{{ form.as_p }}
<input type="submit" value="submit">
</form>
</body>
</html>
<html>
<head>
<title>your name</title>
<meta charset="utf8"/>
</head> <body>
<form action=/app01/yourname method="POST">
<input type='hidden' name='csrfmiddlewaretoken' value='rDlHnoLxu991YKhlb22qVuYbSDDfCHwX1a8Zwd67Y2DyYmwECjVw5l2k3tDFjqaY' />
<!-- 用 p 的方式格式化输入 -->
<p><label for="id_your_name">Your name:</label> <input type="text" name="your_name" maxlength="100" required id="id_your_name" /></p>
<input type="submit" value="submit">
</form>
</body>
</html>

  3、以列表的方式输出

<html>
<head>
<title>your name</title>
<meta charset="utf8"/>
</head> <body>
<form action={% url 'your-name' %} method="POST">
{% csrf_token %}
<!-- 用 p 的方式格式化输入 -->
{{ form.as_ul }}
<input type="submit" value="submit">
</form>
</body>
</html>
<html>
<head>
<title>your name</title>
<meta charset="utf8"/>
</head> <body>
<form action=/app01/yourname method="POST">
<input type='hidden' name='csrfmiddlewaretoken' value='ZgjUKC9RLivh2aZKdHB3c2QOn4ZhwcMVzN6cTrurfbZO2Me3EYu9mTUXyUZHdVqW' />
<!-- 用 p 的方式格式化输入 -->
<li><label for="id_your_name">Your name:</label> <input type="text" name="your_name" maxlength="100" required id="id_your_name" /></li>
<input type="submit" value="submit">
</form>
</body>
</html>

对form输出格式的总结:

  1、{{ form }} 直接输出、这种默认的方式是以table的形式格式化的;

  2、{{ form.as_p }} 以 p 段落的方式输出;

  3、{{ form.as_ul }} 以 ul 列表的方式输出;

默认三种输出的不足:

  如果这三种django自带的输出方式满足不了你的需求、那么“老铁扎心啦!”、你可能要自己定义form的输出了、

  再这之前我们还要学习更多的关于form的东西才行

  1、form.field_name:

<html>
<head>
<title>your name</title>
<meta charset="utf8"/>
</head> <body>
<form action={% url 'your-name' %} method="POST">
{{ form.your_name }}
</form>
</body>
</html>

  可以看到模板中直接对form.field_name 进行打印、输出如下:

<html>
<head>
<title>your name</title>
<meta charset="utf8"/>
</head> <body>
<form action=/app01/yourname method="POST">
<input type="text" name="your_name" maxlength="100" required id="id_your_name" />
</form>
</body>
</html>

  扎心啦、一个字段就直接对应一个 input标签。

  2、form.field_name.lable:

<html>
<head>
<title>your name</title>
<meta charset="utf8"/>
</head> <body>
<form action={% url 'your-name' %} method="POST">
{{ form.your_name.label}}
</form>
</body>
</html>

  生成的代码如下

<html>
<head>
<title>your name</title>
<meta charset="utf8"/>
</head> <body>
<form action=/app01/yourname method="POST">
Your name
</form>
</body>
</html>

  3、form.field_name.label_tag:

<html>
<head>
<title>your name</title>
<meta charset="utf8"/>
</head> <body>
<form action={% url 'your-name' %} method="POST">
{{ form.your_name.label_tag}}
</form>
</body>
</html>
<html>
<head>
<title>your name</title>
<meta charset="utf8"/>
</head> <body>
<form action=/app01/yourname method="POST">
<label for="id_your_name">Your name:</label>
</form>
</body>
</html>

  4、form.field_name.id_for_label:

<html>
<head>
<title>your name</title>
<meta charset="utf8"/>
</head> <body>
<form action={% url 'your-name' %} method="POST">
{{ form.your_name.id_for_label }}
</form>
</body>
</html>
<html>
<head>
<title>your name</title>
<meta charset="utf8"/>
</head> <body>
<form action=/app01/yourname method="POST">
id_your_name
</form>
</body>
</html>

  5、form.field_name.value:

<html>
<head>
<title>your name</title>
<meta charset="utf8"/>
</head> <body>
<form action={% url 'your-name' %} method="POST">
{{ form.your_name.value }}
</form>
</body>
</html>
<html>
<head>
<title>your name</title>
<meta charset="utf8"/>
</head> <body>
<form action=/app01/yourname method="POST">
None
</form>
</body>
</html>

    

  

----

Django form入门详解--2的更多相关文章

  1. Django form入门详解--1

     form在django中的作用: 1.可以用于自动生成form的html 2.数据校验 3.与model一在一起使用.可以大的方便数据驱动型网站的开发 编程中有许多的东西是“不可描述”的.只有动手去 ...

  2. django session入门详解

    概括性的讲: 1.django默认是打开对session的支持的 2.默认情况下session相关的数据会保存在数据库中.浏览器端只保存了session id session 的科普: 1.动态网站中 ...

  3. Linq之旅:Linq入门详解(Linq to Objects)

    示例代码下载:Linq之旅:Linq入门详解(Linq to Objects) 本博文详细介绍 .NET 3.5 中引入的重要功能:Language Integrated Query(LINQ,语言集 ...

  4. SQL注入攻防入门详解

    =============安全性篇目录============== 本文转载 毕业开始从事winfrm到今年转到 web ,在码农届已经足足混了快接近3年了,但是对安全方面的知识依旧薄弱,事实上是没机 ...

  5. SQL注入攻防入门详解(2)

    SQL注入攻防入门详解 =============安全性篇目录============== 毕业开始从事winfrm到今年转到 web ,在码农届已经足足混了快接近3年了,但是对安全方面的知识依旧薄弱 ...

  6. Quartz 入门详解

    Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用.Quartz可以用来创建简单或为运行十个,百个, ...

  7. Redis快速入门详解

    Redis入门详解 Redis简介 Redis安装 Redis配置 Redis数据类型 Redis功能 持久化 主从复制 事务支持 发布订阅 管道 虚拟内存 Redis性能 Redis部署 Redis ...

  8. [转]SQL注入攻防入门详解

    原文地址:http://www.cnblogs.com/heyuquan/archive/2012/10/31/2748577.html =============安全性篇目录============ ...

  9. [置顶] xamarin android toolbar(踩坑完全入门详解)

    网上关于toolbar的教程有很多,很多新手,在使用toolbar的时候踩坑实在太多了,不好好总结一下,实在浪费.如果你想学习toolbar,你肯定会去去搜索androd toolbar,既然你能看到 ...

随机推荐

  1. 原生DOM操作

    注入jQuery var node=document.createElement("script"); node.setAttribute('src','http://common ...

  2. 使用Gulp

    为什么要使用Gulp 在前端开发中通常须要做,预处理语言的编译.js文件的压缩.css文件的压缩.图片的压缩等一系列工作,而使用Gulp能够自己主动化的完毕这些工作,从而提高站点的开发效率,在我的博客 ...

  3. Java Netty (1)

    Netty是由JBOSS提供的一个java开源框架,本质上也是NIO,是对NIO的封装,比NIO更加高级,功能更加强大.可以说发展的路线是IO->NIO->Netty. ServerBoo ...

  4. Semaphore的使用

    Semaphore也是一个线程同步的辅助类,可以维护当前访问自身的线程个数,并提供了同步机制.使用Semaphore可以控制同时访问资源的线程个数,例如,实现一个文件允许的并发访问数. Semapho ...

  5. Java定时器Timer的使用详解

     转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6374714.html 定时器在Web开发中使用得不是很多.这里主要列举一下使用定时器的步骤,方便日后使用时查 ...

  6. android JNI调用(Android Studio 3.0.1)(转)

    最近回头复习了一下android 的jni调用,却发现按以前的方法调用失败,一怒之下就重新摸索,碰了几次壁,发现网上好多教程都不能成功调用,于是记录一下现在AS版本成功好用的调用方法. 这里设定你的n ...

  7. Java通过wait()和notifyAll()方法实现线程间的通信

    Java代码(使用了2个内部类): package Threads; import java.util.LinkedList; /** * Created by Frank */ public cla ...

  8. java sm4国密算法加密、解密

      java sm4国密算法加密.解密 CreationTime--2018年7月5日09点20分 Author:Marydon 1.准备工作 所需jar包: bcprov-jdk15on-1.59. ...

  9. vi编辑器的常用命令

    游标控制 h 游标向左移 j 游标向下移 k 游标向上移 l (or spacebar) 游标向右移 w 向前移动一个单词 b 向后移动一个单词 e 向前移动一个单词,且游标指向单词的末尾 ( 移到当 ...

  10. mysql查询高级用法

    联合查询 select a.* , b.adress , b.name from a , b where a.sbNo = b.cdid order by a.sbNo , a.STime selec ...