Django开发博客-(3)Models

复习

首先复习一个前两章内容
(1)创建app,将其添加到settings的INSTALLED_APPS中
(2)为这个app创建一个views

def homePage(request):
    return render(request, 'myblog/myblog.html', {'homepage':'blog home page!'})

(3)增加一个urls文件
使用这个响应,为响应创建一个连接

from django.conf.urls import url
from myblog import views

urlpatterns = [
    url(r'^blog/$', views.myblog)
]

(4)在工程下的urls中增加这个应用的urls

from django.conf.urls import url, include
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^blog/', include('myblog.urls'))
]

(5)应用增加一个模板文件,并添加一个html文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>博客</title>
</head>
<body>

<h1>{{ homepage }}</h1>

</body>
</html>

随之运行/blog/blog/
这里写图片描述
图1 运行效果图

Models

下面就是本章的重头戏,Models的讲解
首先要知道Django的Modesl是什么?
通常一个Models对应数据库的一张数据表,Models以类的形式表现,它包含了一些基本的字段以及数据的一些操作。
ORM?
全名是对象关系映射(Object Relation Mapping)实现了对象和数据库之间的映射,隐藏的数据访问、操作的细节,不需要编写SQL语句

使用步骤:
(1) 在应用的models中引入models模块,创建类继承models.Model,该类就是一张数据表,在类中创建字段
(2) 字段相当于类的属性例如:
name = modelst.TextField(max_length=32)
具体字段使用函数要查看官方文档吧:
docs.djangoproject.com/en/1.10/ref/models/fields
(3) 生成数据表:
命令行中使用 python manage.py makemigrations app名(可选),不加apps默认是所有的apps都生成,然后执行python manage.py migrate

首先创建表在应用的models中

class Article(models.Model):
    title = models.CharField(max_length=32, default='标题')
    content = models.TextField(null=True)

2个字段,一个标题一个是内容
随后使用命令生成数据表

λ python manage.py makemigrations
Migrations for 'myblog':
  myblog\migrations\0001_initial.py
    - Create model Article

 λ python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying sessions.0001_initial... OK

其实这些数据迁移都是在settings中添加的apps
(如果没有创建sql的表,第一条命令没有输出)
可以看到创建了一个新的文件,0001_initial.py,我们可以查看一下内容

# -*- coding: utf-8 -*-
# Generated by Django 1.11.2 on 2017-06-06 01:26
from __future__ import unicode_literals

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='标题', max_length=32)),
                ('content', models.TextField(null=True)),
            ],
        ),
    ]

由代码可知,Django为我们默认创建了主键id。现在我们可以使用一些sql可视化的一些工具查看数据库的内容了。
这里我使用的是SQLite Expert Personal。
这里写图片描述
图2 数据库查看

然后我们手动忘数据库写入一些数据(记得点击提交修改数据库),id为1开始自增。(如果数据库为空是查询不到的)
这里写图片描述
图3 修改数据库

然后我们需要在页面上显示这些信息
修改views的函数

def myblog(request):
    article = models.Article.objects.get(pk=1)
    return render(request, 'myblog/myblog.html', {'article':article})

主页render第三个参数 键值对最好是名字相同的,在html中会直接使用key作为类名引用属性。两者不一样容易混。

在myblog.html文件中

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>博客</title>
</head>
<body>

<h1>{{ article.title }}</h1>
<h2>{{ article.content }}</h2>

</body>
</html>

我们再次运行/blog/blog/即可在页面上看到
博客
Hello Blog!

在这里models相当于后台,而前端就是html文件显示的页面,通过这种方法将数据传递给页面呈现数据。

但是呢,每次都要使用可视化工具操作数据库,十分不便,接来下我们就是用Django知道的自动化数据管理页面admin来管理!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值