博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
6章 Models
阅读量:5126 次
发布时间:2019-06-13

本文共 2995 字,大约阅读时间需要 9 分钟。

传统的MVC结构中,有模型这么一个概念。Django中,Models又是怎么一回事呢?

 

刚才生成的这些乱七八糟的数据迁移就是Django自带的一些应用

INSTALLED_APPS = [    'django.contrib.admin',    'django.contrib.auth',    'django.contrib.contenttypes',    'django.contrib.sessions',    'django.contrib.messages',    'django.contrib.staticfiles',

创建的数据迁移

 执行python manage.py makemigrations,Django会在app/migrations/目录下生成移植文件blog\migrations\0001_initial.py和blog2\migrations\0001_initial.py

 因为刚刚我们创建的那个模型,我们没有给它添加主键。于是Django呢帮我们创建了这么一个字段用来当做我们这个模型的主键。所以呢如果我们自己手动添加主键,这个id呢也就不会自动生成了。这个id还是挺好用的。

# Generated by Django 2.0.5 on 2018-05-18 14:07from django.db import migrations, modelsclass Migration(migrations.Migration):    initial = True    dependencies = [    ]    operations = [        migrations.CreateModel(            name='Article',            fields=[                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),                ('title', models.CharField(default='Title', max_length=32)),                ('content', models.TextField(null=True)),            ],        ),    ]
# Generated by Django 2.0.5 on 2018-05-18 14:07from django.db import migrations, modelsclass Migration(migrations.Migration):    initial = True    dependencies = [    ]    operations = [        migrations.CreateModel(            name='Article',            fields=[                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),                ('title', models.CharField(default='Title', max_length=32)),                ('content', models.TextField(null=True)),            ],        ),    ]

生成的数据表的SQL语句是可以看的。

这个文件id就是0001或者是0002这些。

使用Django默认的sqlite3数据库

这个就是我们的数据库sqlite3

大部分都是Django自动生成的数据表。前面的blog前缀是Django自动添加的。rowid是这个软件自动加的一个东西。第二个id就是我们的主键。

 

Django的模板语言不但支持字符串之类的那种传统的数据传递,也支持这种对象的传递。

blog\views.py

# -*- coding: utf-8 -*-from __future__ import unicode_literalsfrom django.shortcuts import render# Create your views here.#from django.shortcuts import renderfrom django.http import HttpResponsefrom . import modelsdef index(request):    #return HttpResponse('Hello, world!');    #return render(request,'index.html',{'hello': 'Hello,Blog'})    article = models.Article.objects.get(pk=1)    #return render(request, 'blog/index.html')    return render(request, 'blog/index.html',{
'article':article})

blog2\views.py

# -*- coding: utf-8 -*-from __future__ import unicode_literalsfrom django.shortcuts import render# Create your views here.from . import modelsdef index(request):    #return render(request, 'blog2/index.html')    article = models.Article.objects.get(pk=1)    return render(request, 'blog2/index.html',{
'article':article})

后台代码我们就写完了

刚才传递了这么一个对象article到前端模板,而在模板中调用实例成员的方法和后台是一样的,就用这个.操作符。

blog\index.html

    
Title

{
{ article.title }}

{
{ article.content }}

blog2\index.html

    
Title

{
{ article.title }}

{
{ article.content }}

这个就是Django的模型models的一些基本用法。

转载于:https://www.cnblogs.com/ZHONGZHENHUA/p/9058081.html

你可能感兴趣的文章
Regular Experssion
查看>>
图论例题1——NOIP2015信息传递
查看>>
CocoaPods的安装和使用那些事(Xcode 7.2,iOS 9.2,Swift)
查看>>
Android 官方新手指导教程
查看>>
幸运转盘v1.0 【附视频】我的Android原创处女作,请支持!
查看>>
UseIIS
查看>>
集合体系
查看>>
vi命令提示:Terminal too wide
查看>>
引用 移植Linux到s3c2410上
查看>>
MySQL5.7开多实例指导
查看>>
[51nod] 1199 Money out of Thin Air #线段树+DFS序
查看>>
Red and Black(poj-1979)
查看>>
分布式锁的思路以及实现分析
查看>>
腾讯元对象存储之文件删除
查看>>
jdk环境变量配置
查看>>
安装 Express
查看>>
包含列的索引:SQL Server索引的阶梯级别5
查看>>
myeclipse插件安装
查看>>
浙江省第十二届省赛 Beauty of Array(思维题)
查看>>
NOIP2013 提高组 Day1
查看>>