文档章节

Django模板和数据库操作

 追逐技术的IT人
发布于 2017/03/20 14:06
字数 657
阅读 100
收藏 0

1. Django模板

    Django模板是通过获取views.py中的动态数据,并将他们渲染到页面中去,Django模板中通过{{ }}获取从views.py传递过来的变量值

a.Django模板支持一些语句标签用于访问从views.py带过来的数据

   支持for/if等语句标签,语句标签放在{% %}中,例子:

   a1.在views.py中加入数据并且渲染到模板中去:

   def index(request):
         info_dict = {"site":"自强学堂", "content":"各种IT技术教程"}
         return render(request,"home.html",{'info_dict':info_dict})

   a2.在templates\home.html遍历数据:

   <!DOCTYPE html>
   <html>
   <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>我的主页</title>
   </head>
   <body>
   <div>
      {% for key, value in info_dict.items %}
          {{ key }}:{{ value }}
      {% endfor %}
   </div>
  </body>
  </html>

b.模板继承,模板支持继承,这样可以把一些公用的模块放入到一个模板中,其他的页面继承这个模板,例如:

在templates/base.html中:

<!DOCTYPE html>
<html>
<head>
    <title>{% block title %}默认标题{% endblock %} - 自强学堂</title>
</head>
<body>
{% include 'nav.html' %}
{% block content %}
<div>这里是默认内容,所有继承自这个模板的,如果不覆盖就显示这里的默认内容。</div>
{% endblock %}// 写足够多的 block 以便继承的模板可以重写该部分
{% include 'bottom.html' %}
</body>
</html>

然后在templates/home.html中就可以继承这个模板:

{% extends 'base.html' %} //继承base.html
{% block title %}欢迎光临首页{% endblock %}//修改block部分
{% block content %}
{% include 'ad.html' %}
这里是首页,欢迎光临
{% endblock %}//修改block部分

2. Django操作数据库

  a.Django连接数据库的一些配置在项目下面的settings.py中的DATABASES下面(主要配置可以连接的数据库以及数据库连接的配置信息),默认使用SQLITE3数据库

  b.在Django项目的应用的models.py中添加(假定应用的名字是learn):

  from django.db import models
 
  class Person(models.Model):
    name = models.CharField(max_length=30)
    age = models.IntegerField()

 然后运行python manage.py makemigrations

             python manage.py miagrate

             会在数据库中生成learn_person表,表中会有三个字段:id自增字段,name是varchar(30)字段,age是int字段

   c.django中表示多对多关系,假设app名称为blog,在models.py中:

   class Author(models.Model):
     name = models.CharField(max_length=50)
     qq = models.CharField(max_length=10)
     addr = models.TextField()
     email = models.EmailField()

   class Article(models.Model):
     title = models.CharField(max_length=50)
     author = models.ForeignKey(Author)
     content = models.TextField()
     score = models.IntegerField()
     tags = models.ManyToManyField('Tag')

   class Tag(models.Model):
     name = models.CharField(max_length=50)

   会在数据库中生成blog_author,blog_article,blog_tag,blog_article_tags四张表,其中blog_article_tags是用来存放blog_article与blog_tag多对多关系的

  d.django表数据的增删查改(只是简单介绍一种方法,当然相关的API会比较多):

  models.py中:

  class Person(models.Model):
    name = models.CharField(max_length=30)
    age = models.IntegerField()

 增加: models.Person.objects.create(name='zhouqiang',age=30)

 删除: models.Person.objects.filter(name='zhouqiang').delete()

 查找: models.Person.objects.all()

 修改: models.Person.objects.filter(name='zhouqiang').update(age=40)

 

  

© 著作权归作者所有

下一篇: Django基础
粉丝 4
博文 23
码字总数 33703
作品 0
南京
程序员
私信 提问
Python3基础之学习笔记(十二)-Django简介-Django常用命令-Django项目目录介绍-views和urls-Templates

文章目录 1. Django 1. Django 1.1 Django简介 Django 中提供了开发网站经常用到的模块,常见的代码都为你写好了,通过减少重复的代码,Django 使你能够专注于 web 应用上有 趣的关键性的东西...

GoldenKitten
01/17
0
0
介绍两个Python web框架:Django & Tornado

在各种语言平台中,python涌现的web框架恐怕是最多的;猜想原因应该是在py中构造框架十分简单,使得轮子不断被发明。 这里记述一下我了解过的两个py web框架,供大家参考,希望能起他山之石的...

宁宁123韩
2013/04/14
1K
0
【精华】【学以致用】Django精华总结

简单入门和梳理 1、WEB框架 MVC Model View Controller 数据库 模板文件 业务处理 MTV Model Template View 数据库 模板文件 业务处理 ############## WEB:MVC、MTV 2、Django #安装 pip3 i...

Asktao
2017/10/31
133
0
Django学习-000

Django 特点 1.强大的数据库功能 用python的类继承,几行代码就可以拥有一个丰富,动态的数据库操作接口(API),如果需要你也能执行SQL语句 2.自带的强大的后台功能** 几行简单的代码就让你...

clgo
2016/04/25
21
0
Django 1.2新特性重点导读

欢迎来到Django 1.2! 经过将近一年的开发,Django 1.2 加入了让人振奋的新特征和修正了大量的Bug,以下文档将有助你了解Django 1.2和从老版本升级到Django 1.2注意事项。 概述: Django 1.2...

renwofei423
2010/06/18
907
1

没有更多内容

加载失败,请刷新页面

加载更多

记一次项目启动报java.lang.StackOverflowError

项目是spring boot,之前没有问题,突然有一次debug方式启动的时候报这个错误。 因为其他同事没有问题,线上也没有问题,所以先排除了是代码问题。 开始以为电脑开的软件太多,然后给jvm的内存...

chro008
24分钟前
12
0
idea 2019.2免费激活码

亲测有效到2020.6 812LFWMRSH-eyJsaWNlbnNlSWQiOiI4MTJMRldNUlNIIiwibGljZW5zZWVOYW1lIjoi5q2j54mIIOaOiOadgyIsImFzc2lnbmVlTmFtZSI6IiIsImFzc2lnbmVlRW1haWwiOiIiLCJsaWNlbnNlUmVzdHJpY3Rpb......

Iverson58
32分钟前
8
0
移动APP开发中的重要注意事项

您的移动app在变化吗?如果没有,请确保遵循这些提示进行移动app开发。大多数行业的IT领导者都优先考虑劳动力和消费者的移动性。实现成功的移动app开发具有挑战性,涉及在app功能开发的基础上...

a429011717
39分钟前
6
0
Qt编写自定义控件69-代码行数统计

一、前言 代码行数统计主要用来统计项目中的所有文件的代码行数,其中包括空行、注释行、代码行,可以指定过滤拓展名,比如只想统计.cpp的文件,也可以指定文件或者指定目录进行统计。写完这...

飞扬青云
57分钟前
12
0
驰骋工作流引擎-ccflow关于 “ 是否自动计算未来的处理人”的功能变更

关键字:流程未来节点处理人 工作流快速开发平台 工作流流设计 业务流程管理 asp.net 开源工作流 业务背景:一个流程在启动起来后,是可以对一些节点计算出来处理人是谁,流程的走向。对于另...

孟娟
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部