Django中的MTV概述

MTV概述

​ 通过V对M和T进行连接,用户通过T(界面)对服务器进行访问(发送请求),T把请求传给V(调度),V调用M(数据模型)对模板进行渲染,然后再把渲染后的模板返回给T,T再把渲染后的界面返回给用户。

1、视图Views
  • 在【应用目录/views.py】中创建路由响应函数

    from django.http import HttpResponse
    
    def welcome(request):
    return HttpResponse('HelloDjango');
  • 在【应用目录/urls.py】中进行注册

    from App import views
    url(r'^welcome/',views.welcome)
  • 在【项目的urls】中将【应用的urls】包含进来

    from django.conf.urls import include
    url(r'^welcome/',include('App.urls'))
2、模板Templates
  • 模板就是HTML页面

  • 在工程根目录创建模板文件夹templates

    这里写图片描述

  • 在【项目目录/settings.py】中注册模板文件夹

    
    # 模板配置
    
    TEMPLATES = [
      {
          ...
          # 注册模板文件夹路径
          'DIRS': [
              os.path.join(BASE_DIR, 'templates'),
          ],
         ...
      },
    ]

  • 在templates下创建xxx.html

  • 在响应函数中返回渲染后的模板

    • 方式1
    from django.template import loader
    def welcome():
        template = loader.get_template('xxx.html')
        return HttpResponse(template.render())
    • 方式2
    def welcome():
        return render(request,'xxx.html')
  • 访问静态资源

    • settings.py
    STATIC_URL = '/static/'
    STATICFILES_DIRS = [
        os.path.join(BASE_DIR, 'static'),
    ]
    • html页面
    {% load static %}
    <img src="{% static 'img/dragon.gif' %}">
    
    #或者 <img src="/static/img/{{ name.cName }}.jpg">  
    
    
    #其中{{ name.cName }}为变量
    

    Django内置html模板:
    这里写图片描述

3、模型Models
  • 定义数据模型

    • 定义年级
    class Grademodels.Model):
         gname = models.CharField(max_length=10)
         gdate = models.DateTimeField()
         ggirlnum = models.IntegerField()
         gboynum = models.IntegerField()
         isDelete = models.BooleanField()
    • 定义学生
    class Students(models.Model):
         sname = models.CharField(max_length=20)
         sgender = models.BooleanField(default=True)
         sage = models.IntegerField()
         sinfo = models.CharField(max_length=20)
         isDelete = models.BooleanField(default=False)
    
         # 关联外键
         sgrade = models.ForeignKey(Grade)
  • 测试数据模型

    • 进入python shell

    • python manage.py shell

    • 导入包

    • from App.models import *

    • from django.utils import timezone
    • from datetime import *

    • 增删改查

    • 插入

      • grade_one = Grade()

      • 设置属性值

      grade_one.gname='python1705'
      grade_one.gdate=datetime(year=2018,month=5,day=23)
      grade_one.ggirlnum=5
      grade_one.gboynum = 60
      grade_one.isDelete = False
      • grade_one.save()
    • 查询

      • Grade.objects.all()
      • Grade.objects.get(pk=1)
    • 修改

      • grade_one.gboynum = 55
      • grade_one.save()
    • 删除

      • grade_one.delete()
    • 对象关联(外键)

    • 创建一个一年级学生

      stu = Students()
      
      stu.sname='bill'
      stu.sgender=True
      stu.sage=20
      stu.sinfo='我是比尔,不要杀我好吗'
      
      
      # 指定年级
      
      stu.sgrade=grade_one
      
      stu.save()
    • 获取一年级所有学生

      • grade_one.students_set.all()
  • 结合使用

    • 在urls配置路由规则

    • 在views中调用models中的函数进行查询

    • views向模板传递数据

    • 在模板中对数据进行渲染

    {% for student in students %}
        {{student}}
    {% endfor %}
    • views返回渲染后的模板

猜你喜欢

转载自blog.csdn.net/lm_is_dc/article/details/80423233
今日推荐