zoukankan      html  css  js  c++  java
  • 6章 Models

    传统的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/目录下生成移植文件blogmigrations001_initial.py和blog2migrations001_initial.py

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

    # Generated by Django 2.0.5 on 2018-05-18 14:07
    
    from django.db import migrations, models
    
    
    class 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:07
    
    from django.db import migrations, models
    
    
    class 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的模板语言不但支持字符串之类的那种传统的数据传递,也支持这种对象的传递。

    blogviews.py

    # -*- coding: utf-8 -*-
    from __future__ import unicode_literals
    
    from django.shortcuts import render
    
    # Create your views here.
    
    #from django.shortcuts import render
    from django.http import HttpResponse
    from . import models
    def 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})

    blog2views.py

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

    后台代码我们就写完了

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

    blogindex.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <!--
    <h1>Hello,Blog</h1>
    -->
    <!--
    <h1>Hello,Blog! </h1>
    -->
    <h1>{{ article.title }}</h1>
    <h3>{{ article.content }}</h3>
    </body>
    </html>

    blog2index.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <!--
    <h1>Hello,Blog</h1>
    -->
    <!--
    <h1>Hello,Blog2!</h1>
    -->
    <h1>{{ article.title }}</h1>
    <h3>{{ article.content }}</h3>
    </body>
    </html>

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

  • 相关阅读:
    MySQL-percona安装
    Oracle-19C PSU升级
    Oracle-内存管理机制
    学习进度第十二周
    十天冲刺10
    单词统计续
    十天冲刺9
    学习进度第十一周
    十天冲刺8
    十天冲刺7
  • 原文地址:https://www.cnblogs.com/ZHONGZHENHUA/p/9058081.html
Copyright © 2011-2022 走看看