Django2.0学习笔记_3:django数据库操作

我的dajngo2.0学习笔记

  • django数据库操作:
    • Django配置链接数据库:
    • 在Django中操作数据库:
    • 小试牛刀:
      • 1. 新建book——manager,
      • 2. 配置系列设置
      • 3. views.py
      • 4. urls.py映射
      • 5. 在front中创建static文件夹,中再创建front文件夹,存放css文件 index.css
      • 6. 在templates文件夹下创建三个模板文件

django数据库操作:

Django配置链接数据库:

在操作数据库之前,首先要连接数据库,这里我们以配置Mysql为例连接数据库,不需要单独的创建一个连接对象,只需要在setting.py 文件中做好数据库的相关配置就可以了。实例代码如下:

#setting.py

DATABASES = {
    'default': {
        # 数据库引擎(sqlites/mysql/oracle等)
        'ENGINE': 'django.db.backends.mysql',
        # 数据库名字
        'NAME': 'django_db1',
        # 链接数据库用户名
        'USER': 'root',
        # 连接数据库密码
        'PASSWORD': 'wu642201518',
        # 连接数据库端地址
        'HOST': '127.0.0.1',
        #连接数据库端口号
        'PORT': '3306'

    }
}

#init.py

import pymysql
pymysql.install_as_MySQLdb()

在Django中操作数据库:

在Django中操作数据库有两种方式。第一种方式就是使用原生sql语句操作,第二种就是用ORM来操作。目前先了解第一种。

在Django中使用原声sql语句操作其实就是使用python db api的接口来操作。如果你的MySQL驱动使用的是pymysql,那么你就是使用pymysql来操作的,只不过Django将数据连接的这一部分封装好了,我们只要在settings.py中配置好了数据库连接信息后直接使用Django封装好的接口就可以操作了。实例代码如下:

# 使用django封装好的connection对象,会自动读取setting.py中数据库的配置信息
from django.shortcuts import render
from django.db import connection

def index(request):
    cursor = connection.cursor()
    cursor.execute("insert into book(id,name,author) values(null,'三国演义','罗贯中')")
    result = cursor.execute("select id,name,author from book ")
    #返回所有数据
    rows = cursor.fetchall()
    return render(request,'index.html')

小试牛刀:

---------------------------------------图书管理系统------------------------------------

1. 新建book——manager,

新建front(前端)app,并在settings.py中完成安装
新建数据库book_manger

2. 配置系列设置

settings.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'book_manager',
        'USER': 'root',
        'PASSWORD': 'wu642201518',
        'HOST': '127.0.0.1',
        'PORT':'3306'
    }
}

init.py

import pymysql
pymysql.install_as_MySQLdb()

3. views.py

from django.shortcuts import render
from django.db import connection

def get_corsor():
    return connection.cursor()

def index(request):
    cursor = get_corsor()
    cursor.execute('select id,name,author from book')
    books = cursor.fetchall()
    #[(1,'三国演义','罗贯中'),(2.)。。。。。。。。。。。]
    return render(request,'index.html',context={"books":books})

def add_book(request):
    pass

def book_detail(request,book_id):
    pass

4. urls.py映射

from django.urls import path
from front import views

urlpatterns = [
    path('',views.index,name='index'),
    path('add_book/',views.add_book,name='add_book'),
    path('book_detail//',views.book_detail,name='book_detail'),
    path('delete_book/',views.delete_book,name='delete_book')
]

5. 在front中创建static文件夹,中再创建front文件夹,存放css文件 index.css


*{
    margin: 0;      //*代表所有标签,初始化外边距内边距
    padding: 0;     
    
}

.nav{
    background: #3a3a3a; //背景色
    height: 65px;       //设置高度
    overflow: hidden;   //清除浮动
}


.nav li{
    float: left;        //标签左浮动
    list-style: none;   //去除远点
    margin: 0 20px;     //标签间距
    line-height: 65px;  //字体垂直居中(设置行高等于外盒子)

}

.nav li a{
    color: #fff;                //a标签(字体)左浮动
    text-decoration: none;      //下划线      
}

.nav li a:hover{
    color: lightblue;           //鼠标指向标签变色
}

6. 在templates文件夹下创建三个模板文件

#base.html


{% load static %}

<html lang="en">
<head>
    <meta charset="utf-8">
    <title>图书管理系统title>
    <link rel="stylesheet" href="{% static 'front/base.css' %}">
head>
<body>
    <nav>
        <ul class="nav">
            <li><a href="/">首页a>li>
            <li><a href="{% url 'add_book' %}">发布图书a>li>
        ul>
    nav>
{% block content %}
    <table>
        <tr>
            
        tr>
    table>
{% endblock %}

body>
html>

#index.html

{% extends 'base.html' %}

{% block content %}
    <table>
        <thead>
            <tr>
                <th>序号th>
                <th>书名th>
                <th>作者th>
            tr>
        thead>
        <tbody>
            {% for book in books %}
                <tr>
                    <td>{{ forloop.counter }}td>
                    <td><a href="{% url 'book_detail' book_id=book.0 %}">{{ book.1 }}a>td>
                    <td>{{ book.2 }}td>
                tr>
            {% endfor %}
        tbody>
    table>
{% endblock %}



#add_book.html

{% extends 'base.html' %}

{% block content %}
    <form action="" method="post">
        <table>
            <tbody>
                <tr>
                    <td>书名td>
                    <td><input type="text" name="name">td>
                tr>
                <tr>
                    <td>作者td>
                    <td><input type="text" name="author">td>
                tr>
                <tr>
                    <td>td>
                    <td><input type="submit" value="提交">td>
                tr>
            tbody>
        table>
    form>
{% endblock %}

===============================================================================
#book_details.html

{% extends 'base.html' %}

{% block content %}
    <p>书名:{{ book.1 }}p>
    <p>作者:{{ book.2 }}p>
    <form action="{% url 'delete_book' %}" method="post">
        <input type="hidden" name="book_id" value="{{ book.0}}">
        <input type="submit" value="删除">
    form>
{% endblock %}

================================================================================


orm模型:

在app中的models.py中创建模型

  1. models.py
from django.db import models

class Book(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=100,null=False)
    author = models.CharField(max_length=100,null=False)
    price = models.FloatField(null=False,default=0)

class Publisher(models.Model):
    name = models.CharField(max_length=100,null=False)
    address = models.CharField(max_length=100,null=False)

  1. 使用 makemigrations生成迁移脚本文件
python manage.py makemigrations
  1. 使用migrate将新生成的迁移脚本文件映射到数据库中
python manage.py migrate
  1. 打开数据库navicate查看

你可能感兴趣的:(django,python,django)