Django入门学习(三)

Ctrl+Fn+B退出服务器

Models

1.Django中的Models是什么?
通常,一个Model对应数据库的一张数据表。Django中Model类以类的形式表现,它包含了一些基本字段以及数据的一些行为。
2.ORM(Object Relation Mapping):对象关系映射。实现了对象和数据库之间的映射。隐藏了数据访问的细节,不需要编写SQL语句。

编写Models

1、步骤:

  • 在应用根目录下创建models.py,并引入models模块。这一步Django在创建应用的时候已经帮我们实现了。
  • 创建类,继承models.Model,该类即是一张数据表。
  • 在类中创建字段

2、字段创建:
语法为 字段名 = models下的某个字段类,可传参数,有的参数可选,有的参数必选
例:字段名 = models.CharField(max_length = 64)
这里CharField就有必选参数:最大长度

3.生成数据表

  • 命令行中进入manage.py同级目录
  • 执行python manage.py makemigrations app名(可选)(如果不写app名,则默认为该目录下的所有的应用都生成数据迁移)
  • 再执行python manage.py migrate

4.查看
Django会自动在app/migrations/目录下生成移植文件。打开0001_initial.py我们会发现

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)),
            ],
        ),
    ]

在这段代码中,我们并没有创建id,结果却存在id字段。这是因为我们在创建时没有为Article设置主键,所以Django为我们默认生成一个主键。如果自己手动生成主键,则id不会自动生成。
执行python manage.py sqlmigrate 应用名 文件id 查看SQL语句
默认sqlite3的数据库在项目根目录下db.sqlite3。可使用第三方软件SQLite Expert Personal查看并编辑sqlite3。

5.页面呈现数据
后台步骤:

  • 在views.py中import models 这个模块
  • 获取模型类的一个具体对象
    例:article = models.Article.objects.get(pk=1)
    article为变量名,Article为我们的类。get方法里的参数就是我们要指定的数据里的标识。pk即primarykey。
  • 最后通过render把数据传到前端
    例:render(request,page,{‘article’:article})

6.前端步骤:
模板可直接使用对象以及对象的“.”操作,如:{{article.title}}。
运行中如果出现Article matching query does not exist.的问题,注意查看数据库中是否有相关记录。

//views.py
from django.shortcuts import render
from django.http import HttpResponse
from .import models

def index(request):
    # return HttpResponse('Hello,world')
    article = models.Article.objects.get(pk=1)
    return render(request,'index.html',{'article':article})
# Create your views here.

//models.py
from django.db import models

class Article(models.Model):
    title = models.CharField(max_length = 32 , default = 'Title')
    content = models.TextField(null = True) #允许为空
# Create your models here.
//index.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>{{ article.title }}</h1>
<h3>{{ article.content }}</h3>
</body>
</html>

在settings.py中设置时区时,只需要设置为Asia/Shanghai即可

Admin

什么是Admin?
Admin是Django自带的一个功能强大的自动化数据管理界面,被授权的用户可直接在Admin中管理数据库。

配置Admin

  • 创建用户
    执行python manage.py createsuperuser
>>python manage.py createsuperuser
Username (leave blank to use 'aaron'): admin
Email address: admin@admin.com
Password:aaronyan1120(写在这里防止忘记)
Password (again):aaronyan1120
Superuser created successfully.
  • 访问后台管理系统
    地址为localhost:8000/admin/
    显示如下界面
    在这里插入图片描述
    若想要显示为中文只需修改settings.py中LANGUAGE_CODE = ‘zh_Hans’

配置应用

  • 在应用下admin.py中引入自身的models模块(或里面的模型类)
  • 编辑admin.py:admin.site.register(models.Article)
from django.contrib import admin

from .import models

admin.site.register(models.Article)
# Register your models here.

我们会发现增加一条数据时,都显示Artical Object,如下图所示,这样很不便于管理。因此我们可修改数据默认显示名称。在这里插入图片描述

步骤:
①在Article类下添加一个方法
Python3使用__str__(self) Python 2.7使用__unicode__(self)
②return self.title

//models.py
from django.db import models

class Article(models.Model):
    title = models.CharField(max_length = 32 , default = 'Title')
    content = models.TextField(null = True) #允许为空
    def __str__(self)://这里每一侧都是两个下划线,且不能与class同级
        return self.title
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值