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 Grade(models.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返回渲染后的模板