django框架下的数据库使用

本文详细介绍了在Django框架下如何使用数据库,包括Django ORM、数据库配置、模型类属性的字段选项、查询、F对象、Q对象、聚合函数、查询集以及模型类关系等,提供了一系列实例和操作技巧,帮助读者深入理解Django数据库操作。
摘要由CSDN通过智能技术生成

模型

1. Django ORM

O(objects):类和对象。

R(Relation):关系,关系数据库中的表格。

M(Mapping):映射。

Django ORM框架的功能:

a) 建立模型类和表之间的对应关系,允许我们通过面向对象的方式来操作数据库。

b) 根据设计的模型类生成数据库中的表格。

c) 通过方便的配置就可以进行数据库的切换。

2. Django数据库配置

2.1 创建项目

今天演示使用MySQL数据库,这是Web项目首选的数据库。

进入虚拟环境dj_py3

workon dj_py3

创建项目demo2。

django-admin startproject demo2

创建应用

python manage.py startapp news

注册应用,打开demo2/settings.py文件,将应用添加进去

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'news'
)

2.1 mysql命令回顾

登录mysql数据库:

mysql –uroot –p

查看有哪些数据库:

show databases

创建数据库:

create database test2 charset=utf8#切记:指定编码

使用数据库:

use dj_py3;

查看数据库中的表:

show tables;

2.2 Django配置使用mysql数据库

修改settings.py中的DATABASES。

DATABASES = {
    'default': {
        # 'ENGINE': 'django.db.backends.sqlite3',
        # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        'ENGINE': 'django.db.backends.mysql',  # 设置使用mysql数据库
        'NAME':'dj_py3',                       # 指定数据库
        'USER':'root',                         # 用户名
        'PASSWORD':'mysql',                #数据库所在主机的ip
        'PORT':3306                            #端口号
        'HOST':'localhost'
    }
} 

注意:django框架,只能生产数据表,不会自动帮我们生成mysql数据库,所以我们需要自己去创建。

2.3 切换mysql数据库之后不能启动服务器

需要安装操作mysql数据库的包,python2环境和python3环境有以下区别。

a) python2**需要安装mysql-python:

pip install mysql-python

b) python3需要安装pymysql:

pip install pymysql

python3中安装好pymysql,需要在demo2/init.py中加如下内容:

import pymysql
pymysql.install_as_MySQLdb()
​

 

3. 复习案例

1、 设计模型类NewsInfo并生成表

模型类设计,在昨天的基础上增加属性read和comment,另外设置软删除标记属性isDelete。

软删除标记:删除数据时不做真正的删除,而是把标记数据设置为1表示删除,目的是防止重要的数据丢失。

models.py代码如下

from django.db import models
​
class NewsInfo(models.Model):
    title = models.CharField(max_length=50)     #标题
    context = models.TextField()               #内容
    b_date = models.DateField()                #日期
    read =models.IntegerField()                #阅读量
    comment = models.IntegerField()            # 评论数
    is_delete = models.BooleanField(default=0)  #逻辑删除

生成迁移:python manage.py makemigrations

执行迁移 :python manage.py migrate

2、通过站点管理添加数据

注册模型类:打开应用目录下的admin.py文件,编写代码如下

from django.contrib import admin
# Register your models here.
from .models import NewsInfo
​
class NewsInfoAdmin(admin.ModelAdmin):
    list_display = ['id','title','b_date']
​
admin.site.register(NewsInfo,NewsInfoAdmin)

创建管理员账号:python manage.py createsuperuser

启动项目:python manage.py runserver 主机ip:端口号

登录站点管理,添加数据

3、编写视图函数并配置URL。

同样我们先分为两个页面,一个新闻列表展示页,一个详情页

创建视图函数

打开views.py,创建index视图函数

from django.shortcuts import render
# Create your views here.
from .models import NewsInfo
​
def index(request):
    news_list = NewsInfo.objects.all()
    context={'news_list':news_list}
    return render(request,'templates/index',context)
​

配置urls,

在应用目录下创建一个urls.py文件,url配置代码如下

from django.conf.urls import url,include
from .views import *
​
urlpatterns = [
    url(r'^$',include(index)),
    url(r'^index',include(index)),
]

然后再demo/urls.py里面,加入一行代码关联到应用的urls配置

url(r'^',include('news.urls'))

 

4、创建模板文件。

创建模板目录:在项目目录下,创建templates目录,再在templates目录中创建一个和应用同名的目录news,

配置模板路径:在想项目目录的stttings.py下面,对TEMPLATES里的DIRS项,进行修改

'DIRS': [os.path.join(BASE_DIR,'templates')]

创建模板:在news下创建index.html模板文件。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>首页</title>
</head>
<body>
<!--新闻列表-->
<h1>{
 {h1}}</h1>
<!--遍历出所有新闻对象-->
{%for news in news_list%}
<!--显示每条新闻的标题和日期,设置超链接,链接到详细内容页面-->
<li><a href="/{
 {news.id}}">{
 {news.title}}</a>
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值