在之前的埔文中说到了对Model的操作以及对url的路由映射等内容,对应django的mtv框架则是完成了学习,Model与viewer的操作,那么本节主要来唠叨一下template,当Model,view ,template三者打通以后,我们就基本可以完成一个小型系统的基本功能

对于template的的使用同样需要在django的setting.py文件中指定路径,如下所示:

  1. TEMPLATES = [
    {
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': [os.path.join(BASE_DIR,'template')],
    'APP_DIRS': True,
    'OPTIONS': {
    'context_processors': [
    'django.template.context_processors.debug',
    'django.template.context_processors.request',
    'django.contrib.auth.context_processors.auth',
    'django.contrib.messages.context_processors.messages',
    ],
    },
    },
    ]
    同时需要指定以下内容:
    STATIC_URL = '/static/'    指定静态资源如 css js
  2.  
  3. 对于django的路由系统来说,请求最先到达的是路由映射的方法中,将方法将判断此请求是get还是post,如果是get请求一般会将内容渲染到一个无需验证的template文件中
  4.  
  5. 范例
    view层代码:
  1. from django.shortcuts import render,render_to_response
    from django.http import HttpResponse
    from models import Asset
    def userlogin(request):
    if request.method=='GET':
    return render_to_response('web/form.html')
    if request.method=='POST':
    name=request.POST.get('username',None)
    if Asset.objects.filter(username=username).count()==1:
    datalist=Asset.objects.all()
    return render_to_response('web/assetlist.html',{'data':datalist,'user':'jay'})
    else:
    return HttpResponse('登录失败')
  2.  
  3. Model层代码()
  1.  
  1. class userinfo(models.Model):
    username=models.CharField(max_length=100)
    create_date=models.DateTimeField(auto_now_add=True)
    update_date=models.DateTimeField(auto_now=True)
  2.  
  3. template层代码:
  4.  
  5. <!DOCTYPE html>
  6.  
  7. <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Title</title>
    </head>
    <body>
    <table border="1" cellpadding="20" cellspacing="3" width="300">
    {{user}}<br>
    {%if user%}
  8.  
  9. 得到了用户
    <br>
    {%else%}
    没有得到用户
    {%endif%}
    {%ifequal user 'jay'%}
    系统返回的用户是jay
    {%endifequal%}
    {%for item in data %}
    <tr>
    <td>{{item.id}}</td>
    <td>{{item.hostname}}</td>
    <td>{{item.createdate|date:'y-m-d H:i:s'}}</td>
  10.  
  11. </tr>
    {%endfor%}
    </table>
    </body>
    </html>
  1. url中做相关映射:
  1. url(r'^login/', userlogin),
    打开访问http://localhost:8000/web/login
  2.  
  3. 至此一个简单的model view template三者的连动就已经完成
  4.  
  5. django同样提供了基于母版页的设计,应用也非常简单
  6.  
  7. 如下所示
    母板页面的代码
  1. <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Title</title>
    </head>
    <body>
    <div>公用的头部</div>
    {%block content%}
    {%endblock%}
    <div>公用的底部</div>
    </body>
    </html>
    内容页面的代码
  2.  
  3. {%extends "master/layout.html"%}
    {%block content%}
    啦啦啦,我是母板的占位重写的内容
    {%endblock%}
    视图函数代码:
  1. def masterpage(request):
    return render_to_response('web/index.html')
  2.  
  3. url映射:
  1. url(r'^page/', masterpage),
  1. 此时在访问:http://localhost:8000/web/page时就会访问到应用了母板的页面
  1.  
  1.  

django表单及母板的更多相关文章

  1. python 全栈开发,Day111(客户管理之 编辑权限(二),Django表单集合Formset,ORM之limit_choices_to,构造家族结构)

    昨日内容回顾 1. 权限系统的流程? 2. 权限的表有几个? 3. 技术点 中间件 session orm - 去重 - 去空 inclusion_tag filter 有序字典 settings配置 ...

  2. python3之Django表单(一)

    1.HTML中的表单 在HTML种,表单是在<form>...</form>种的元素,它允许用户输入文本,选择选项,操作对象等,然后发送这些数据到服务器 表单元素允许用户在表单 ...

  3. django表单的api

    django表单的api,参考文档:https://yiyibooks.cn/xx/Django_1.11.6/ref/forms/api.html 绑定与未绑定形式: Form要么是绑定的,要么是未 ...

  4. Django表单API详解

    声明:以下的Form.表单等术语都指的的广义的Django表单. Form要么是绑定了数据的,要么是未绑定数据的. 如果是绑定的,那么它能够验证数据,并渲染表单及其数据,然后生成HTML表单.如果未绑 ...

  5. 9:django 表单

    django自带表单系统,这个表单系统不仅可以定义属性名,还可以自己定义验证,更有自己自带的错误提示系统 这节我们仅仅粗略的来看一下django表单系统的入门运用(具体的实在太多东西,主要是我觉得有很 ...

  6. django 表单系统 之 forms.Form

    继承forms.Form实现django表单系统 参考: https://www.cnblogs.com/zongfa/p/7709639.html https://www.cnblogs.com/c ...

  7. 关于创建Django表单Forms继承BaseForm的问题

    在创建Django表单时,因为需要验证用户输入的验证码是否正确,因此需要在session里提取当前验证码的值和POST提交过来的值进行比对,如图: form.py from django import ...

  8. Django 表单处理流程

    Django 的表单处理:视图获取请求,执行所需的任何操作,包括从模型中读取数据,然后生成并返回HTML页面(从模板中),我们传递一个包含要显示的数据的上下文.使事情变得更复杂的是,服务器还需要能够处 ...

  9. 第四章:Django表单 - 2:Django表单API详解

    声明:以下的Form.表单等术语都指的的广义的Django表单. Form要么是绑定了数据的,要么是未绑定数据的. 如果是绑定的,那么它能够验证数据,并渲染表单及其数据,然后生成HTML表单.如果未绑 ...

随机推荐

  1. 《第一行代码》学习笔记19-广播接收器Broadcast_Receiver(2)

    1.解决广播的安全性问题,Android引入了一套本地广播机制,使用该机制发出的广播只能够在应用程序内部进行传递,并且广播接收器只能 接收来自本应用程序发出的广播. 2.本地广播无法通过静态注册来接收 ...

  2. 查看Sql语句执行速度

    原文链接:http://www.cnblogs.com/New-world/archive/2012/11/28/2793560.htmlMS_SQL模糊查询like和charindex的对比 lik ...

  3. C++中的类指针

    代码: #include <iostream> #include <string> #include <cstdio> using namespace std; c ...

  4. C语言中固定大小的数据类型的输入和输出

    在使用C语言时,对数据的大小要求比较严格时,例如要使用32位的整数类型,这时要使用 int32_t,无论平台如何变化,数据大小仍然是32位,固定位数的数据类型还有 uint32_t.uint64_t ...

  5. paip.输入法编程----一级汉字1000个

    paip.输入法编程----一级汉字1000个.txt 作者Attilax ,  EMAIL:1466519819@qq.com  来源:attilax的专栏 地址:http://blog.csdn. ...

  6. ssh-agent自启动加key脚本

    公司使用到阿里云. 需要使用 ssh-agent forward 来跳转.为了方便自己就写了这个脚本 1 #!/bin/sh 2 # auto start ssh-agent and add key ...

  7. 【JAVA编码专题】总结

    第一部分:编码基础 为什么需要编码:用计算机看得懂的语言(二进制数)表示各种各样的字符. 一.基本概念 ASCII.Unicode.big5.GBK等为字符集,它们只定义了这个字符集内有哪些字符,以及 ...

  8. hex格式介绍及转bin格式的源程序

    Intel HEX文件是记录文本行的ASCII文本文件,在Intel HEX文件中,每一行是一个HEX记录,由十六进制数组成的机器码或者数据常量.Intel HEX文件经常被用于将程序或数据传输存储到 ...

  9. Keil C动态内存管理机制分析及改进

    Keil C是常用的嵌入式系统编程工具,它通过init_mempool.mallloe.free等函数,提供了动态存储管理等功能.本文通过对init_mempool.mallloe和free这3个Ke ...

  10. 非索引列上的统计 <第二篇>

    非索引列上的统计 有时候,可能在连接或过滤条件中的列上没有索引.即使对这种非索引列,如果查询优化器知道这些列的数据分布(统计),它也很可能做出最佳的选择. 除了索引上的统计,SQL Server可以在 ...