django MTV模式之----template模版

django是动态的网页,后台的数据需要动态的插入到前端中,这时就依赖于django的template模版框架。django支持多种模版框架,下面介绍django自带的。

自带的模版语言可以在django模版中插入一些简单的代码和逻辑,例如变量,逻辑判断等。下面是一些模版的基础用法:(在html代码中插入该模版标签)

变量:

{{result}}

if判断

{%if%}
{%endif%}

循环for

{%for%}
{%endfor%}

过滤器(用于变量转化)
例子:使变量输出为时间格式

{{ item.publishtime|date:'Y-m-d H:i:s' }}

django有大量的过滤器来处理前端的展示,具体可参考:
http://djangobook.py3k.cn/appendixF/
https://docs.djangoproject.com/en/1.10/howto/custom-template-tags/

后台view会将数据传递给前台模版,交给前台模版去渲染。

django MTV模式之----view

views.py是django中python后台处理的主要逻辑代码的地方,一般来说每访问一个网页,会对url进行匹配,这时会调用相应的views(实际就是一个python的自定义函数),之后view里面的函数对数据经过处理之后返回给前端。

一个view简单例子:

def blogmanager(request):
results = BlogList.objects.all().order_by('-time')
context = {'results': results}
return render(request,
'bloglist/blogmanager.html', context)

在view中用get方法获取前端提交的表单信息:

  dayfrom = request.GET.get("dayfrom", "")
dayto = request.GET.get("dayto", "")
filterresult = request.GET.get("result", "")

在views中直接返回文本

return HttpResponse("disabled account")

在view中进行页面跳转

HttpResponseRedirect('/file/test/')

在view里返回数据给前台渲染,传递的context变量可以是字典的数据类型

return render(request, 'blog/publishlist.html', context)

django----url匹配

urls.py是配置访问相应url对应哪个views去处理的地方。django的url格式还是比较优雅和简单的,并且支持正则表达式。

url配置写法例子如下:

from django.conf.urls import patterns, include, url
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
url(r'^$', 'blog.views.home', name='home'),
url(r'^record/(\d+)/', 'blog.views.record', name='record'),
url(r'^stats/(\S+)/', 'blog.views.stats', name='stats'),
)

url标签,定义name,在views里面加一个name="",name可以写在模版里,这样不用写死url地址。

url(r'^blogmanager/index$', 'sjzs.views.blogmanager', name='blogmanager'),

<a class="brand" href="{%url 'blogmanager'%}">博客信息一览</a>

但是这个名称是全局唯一的,不能重复。

url.py嵌套,在django工程目录下有个url.py,另外在各自的应用目录下也可以创建一个url.py,然后在工程目录的url.py中加上一句include,这样某个应用url的匹配就可以具体写在应用目录下的url.py,如下:

url(r'^subblog/', include('subblog.urls'))

url 参数,django支持从url中获取参数

url(r'^record/(\d+)/', 'blog.views.record', name='record'),

django----admin后台管理

admin是django自带的后台管理,很方便使用,这个自动生成的后台页面里面有很多内容,包括用户和权限管理,也包括了应用的数据库内容,超级管理员可以编辑内容,增删改查,并且可以方便查找和过滤数据。

开启admin:在settings.py文件的install_apps里去掉admin的注释,如下:

INSTALLED_APPS = (
'django.contrib.admin',
)

更新数据库

python manage.py syncdb

在admin.py文件加入下面代码:

from django.contrib import admin
from polls.models import BlogList
class BlogList_Admin(admin.ModelAdmin):
list_display = ('id', 'blogtitle', 'time','number', 'content','blank',)
list_filter = ('id', 'blogtitle','time',)
search_fields = ('number','time',)
list_per_page=20
admin.site.register(BlogList, BlogList_Admin)

在urls.py开启admin

from django.contrib import admin
admin.autodiscover()
url(r'^admin/', include(admin.site.urls)),

为后台创建超级管理员

manage.py createsuperuser --username=test --email=test@gmail.com

访问admin后台

python manage.py runserver
http://127.0.0.1:8000/admin/

xadmin

如果觉得django自带的admin界面比较简陋,还可以使用xadmin,功能比较多。
http://xadmin.readthedocs.io/en/docs-chinese/

django更多信息参考:

https://www.djangoproject.com/

python django基础(二)的更多相关文章

  1. python django基础二URL路由系统

    URL配置 基本格式 from django.conf.urls import url #循环urlpatterns,找到对应的函数执行,匹配上一个路径就找到对应的函数执行,就不再往下循环了,并给函数 ...

  2. day 66 Django基础二之URL路由系统

    Django基础二之URL路由系统   本节目录 一 URL配置 二 正则表达式详解 三 分组命名匹配 四 命名URL(别名)和URL反向解析 五 命名空间模式 一 URL配置 Django 1.11 ...

  3. day 53 Django基础二之URL路由系统

    Django基础二之URL路由系统   本节目录 一 URL配置 二 正则表达式详解 三 分组命名匹配 四 命名URL(别名)和URL反向解析 五 命名空间模式 一 URL配置 Django 1.11 ...

  4. Django基础二静态文件和ORM

    Django基础二静态文件和ORM 目录 Django基础二静态文件和ORM 1. 静态文件 1.1 静态文件基本配置: 1.2 静态文件进阶配置 2. request参数 3. Django配置数据 ...

  5. python Django基础操作

    Django常用命令 创建Django项目 Django-admin startprotect  mysite 创建项目以后,以下生成的文件 最外层的file:mysite/ 根目录只是你的项目的容器 ...

  6. python 自动化之路 day 19 Django基础[二]

    Django - 路由系统 url.py - 视图函数 views.py - 数据库操作 models.py - 模板引擎渲染 - HttpReponse(字符串) - render(request, ...

  7. Django基础(二):环境配置

    前戏 WEB框架简介 具体介绍Django之前,必须先介绍WEB框架等概念. web框架: 别人已经设定好的一个web网站模板,你学习它的规则,然后“填空”或“修改”成你自己需要的样子. 一般web框 ...

  8. python django基础五 ORM多表操作

    首先在创建表的时候看下分析一下 1.作者表和作者详细地址表  一对一关系 理论上谁都能当主表 把Author设置成主表 au=models.OneToOneField(to='AuthorDetail ...

  9. python django基础四 ORM简介

    ORM,全称是object relation mapping.翻译过来,就是对象关系映射. 主要来学习MySQL操作,MySQL是一个软件.它的优点:1.免费 2.开源 pymysql,就是Mysql ...

随机推荐

  1. 【HTTP】模拟form提交表单(转)

    第一种:WebClient string postString = "arg1=a&arg2=b";//这里即为传递的参数,可以用工具抓包分析,也可以自己分析,主要是for ...

  2. Day 2 T1

    题目描述 组合数表示的是从n个物品中选出m个物品的方案数.举个例子,从(1,2,3) 三个物品中选择两个物品可以有(1,2),(1,3),(2,3)这三种选择方法.根据组合数的定 义,我们可以给出计算 ...

  3. Leetcode Power of Two

    Given an integer, write a function to determine if it is a power of two. 题目意思: 给定一个整数,判断是否是2的幂 解题思路: ...

  4. requirejs 打包 添加版本号收集资料 待测试

    https://www.npmjs.org/package/rjs-optimhttps://www.npmjs.org/package/grunt-requirejs-md5指定js版本号 但不是M ...

  5. bootstrap之google fonts

    bootstrap之google fonts 在学习一个bootstrap时,看到了一行引用代码:@import url(http://fonts.googleapis.com/css?family= ...

  6. JMF框架

    Java媒体框架(JMF)使你能够编写出功能强大的多媒体程序,却不用关心底层复杂的实现细节.JMF  API的使用相对比较简单,但是能够满足几乎所有多媒体编程的需求.在这篇文章中,我将向你介绍如何用很 ...

  7. Web服务网站故障分析常用的命令

    1.查看TCP连接状态netstat -nat |awk ‘{print $6}’|sort|uniq -c|sort -rn netstat -n | awk ‘/^tcp/ {++S[$NF]}; ...

  8. System.Dynamic.ExpandoObject 类型的简单使用

    该类型可以实现的是动态添加属性和移除属性,有点类似 js 中对象的操作,非常灵活 static void Main(string[] args) { dynamic obj = new System. ...

  9. 初涉深度优先搜索--Java学习笔记(二)

    版权声明: 本文由Faye_Zuo发布于http://www.cnblogs.com/zuofeiyi/, 本文可以被全部的转载或者部分使用,但请注明出处. 上周学习了数组和链表,有点基础了解以后,这 ...

  10. 浏览器中CSS的BUG

    对于web2.0的过度,请尽量用xhtml格式写代码,而且DOCTYPE 影响 CSS 处理,作为W3C的标准,一定要加 DOCTYPE声明. 其它请参考:CSS hack 针对IE6,IE7,fir ...