Django模板和数据库操作

原文链接: https://my.oschina.net/seektechnology/blog/863027

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遍历数据:

  
  
  
   
    我的主页
  
  
  


      {% for key, value in info_dict.items %}
          {{ key }}:{{ value }}
      {% endfor %}
  

 
 

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

在templates/base.html中:




    {% block title %}默认标题{% endblock %} - 自强学堂


{% include 'nav.html' %}
{% block content %}

这里是默认内容,所有继承自这个模板的,如果不覆盖就显示这里的默认内容。

{% endblock %}// 写足够多的 block 以便继承的模板可以重写该部分
{% include 'bottom.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)

 

  

转载于:https://my.oschina.net/seektechnology/blog/863027

你可能感兴趣的:(Django模板和数据库操作)