梅科尔工作室-李庆浩 Django笔记

1.Django各模块作用

main.py

用于存放功能类函数

urls.py作为路由,分发功能用,根据路径名,调用相应的视图函数。

views.py

保存视图函数

models.py

负责在数据库创建表格,添加字段名称

templates文件夹

放置html文件

static文件夹

放置静态文件

2.Django实战项目过程

2.1配置路由urls

(1)首先创建一个app。进入Terminal。

输入创建app的代码命令,如下

misterwu为创建的app的名字,注意更改自己想要的名称

python manage.py startapp misterwu

然后会出现一个misterwu文件。

然后到主文件下的settings.py中找到INSTALLED_APPS下添加app。

在主文件下的urls.py中添加以下代码。

在misterwu文件夹下新建一个urls.py文件。

 

 在这个urls.py中写以下代码

 2.2展示html页面

在mistrrwu文件夹下的urls.py中继续书写代码,如下

此处会出现报红,因为我们还没创建 home方法,接下来创建。

在views.py中建立一个home方法

 然后在misterwu下新建一个templates文件夹,然后再新建一个home.html.

在home.html中写入想要展示的东西。

例如:

然后在Terminal中执行如下代码

python manage.py runserver 127.0.0.1:8000

然后点击出现的网址

 接着就可以在网页中看见自己想要展示的东西了。

 显示页面的整个过程是,点击这个网址,会先访问主文件下的urls.py,然后根据写入的路径跳转到misterwu下的urls.py,然后根据现在请求的路径地址,会调用views下的home方法,进入到views.py下,然后利用home方法展示我们的web页面。

 2.3创建公共html模板

进入bootstrap官网:Bootstrap中文网Bootstrap是Twitter推出的一个用于前端开发的开源工具包。它由Twitter的设计师Mark Otto和Jacob Thornton合作开发,是一个CSS/HTML框架。目前,Bootstrap最新版本为3.0 。Bootstrap中文网致力于为广大国内开发者提供详尽的中文文档、代码实例等,助力开发者掌握并使用这一框架。https://www.bootcss.com/Bootstrap是Twitter推出的一个用于前端开发的开源工具包。它由Twitter的设计师Mark Otto和Jacob Thornton合作开发,是一个CSS/HTML框架。目前,Bootstrap最新版本为3.0 。Bootstrap中文网致力于为广大国内开发者提供详尽的中文文档、代码实例等,助力开发者掌握并使用这一框架。https://www.bootcss.com/然后点击自己想要的html模板

 选择html4或html5中文文档,进入之后,点击中文文档,一直下滑,找到入门模板并复制

 然后将复制的模板用于自己html中

2.4展示导航信息

还是进入刚刚的中文文档里面,点击组件里面的导航,及Navbar,然后进行复制案例,运用到自己的html网页中。

2.5接口介绍

接口是用来向html传送数据的,可以从网上直接搜索可用的接口,如github的一个接口,如下:

里面直接有存储的数据信息,同时也可以自己用自己创建的数据库的接口。

https://api.github.com/users?since=0

 2.6接口请求和解析

调用接口和请求数据需要在views.py中设置。

请求数据之前首先要引入requests模块

解析数据需要引入json模块

json模块不需要下载,系统自带的,而requests需要安装,安装代码为

pip install requests

示例如下:

 在html中显示接收到的数据用两个花括号{{api}],括号内是刚书写的键值对的键的名字。

如下所示:

网页展示如下:

3.Django的基础使用

3.1请求与响应

请求与相应的步骤和第二部分Django实战项目过程中的配置路由和显示页面步骤一样,主要是明白如何通过配置文件里的路由然后将创建的html页面在网页上显示出来。

3.2模型与后台

主要是通过model.py创建数据表,其中可以添加需要的字符段。

通过models.py创建数据表之前首先要通过pymysql连接数据库。

然后在models.py中输入如下示例代码:

# models.py
from django.db import models
 
class Test(models.Model):
    name = models.CharField(max_length=20)

以上的类名代表了数据库表名,且继承了models.Model,类里面的字段代表数据表中的字段(name),数据类型则由CharField(相当于varchar)、DateField(相当于datetime), max_length 参数限定长度。

然后通过命令端输入以下命令进行表的创建。

TestModel为app的名称,注意根据自己创建的app名称进行修改。

python manage.py makemigrations  # 让 Django 知道我们在我们的模型有一些变更
python manage.py migrate   # 创建表结构

之后就可以在mysql中看到我们创建成功的数据表了,如图所示:

3.3视图和模板

视图就是在views.py下通过创建类或者方法显示页面,也可以调用接口,解析数据。

如下图是调用接口实例,用方法显示页面

模板即html模板,可以自行设计,也可以在网站上引用,例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<table border="1">
    <thead>
    <tr>
        <td>id</td>
        <td>姓名</td>
        <td>年龄</td>
        <td>性别</td>
        <td>年纪</td>
    </tr>
    </thead>
    <tbody>
    {% for student in student_queryset %}
        <tr>
            <td>{{ student.id }}</td>
            <td>{{ student.name }}</td>
            <td>{{ student.age }}</td>
            <td>{{ student.gender }}</td>
            <td>{{ student.grade }}</td>
        </tr>
    {% endfor %}
 
 
    </tbody>
</table>
</body>
</html>

 3.4表单操作语句

3.4.1增加

models.表名.objects.create(键值对) 

示例:

from django.shortcuts import render,HttpResponse
from app01 import models 
def add_book(request):
    books = models.Book.objects.create(title="如来神掌",price=200,publish="功夫出版社",pub_date="2010-10-10") 
    print(books, type(books)) # Book object (18) 
    return HttpResponse("<p>数据添加成功!</p>")

3..4.2查找

(1)使用 all() 方法来查询所有内容

返回的是 QuerySet 类型数据,类似于 list,里面放的是一个个模型类的对象,可用索引下标取出模型类的对象。

models.表名.objects.all() 

示例:

from django.shortcuts import render,HttpResponse
from app01 import models 
def add_book(request):
    books = models.Book.objects.all() 
    print(books,type(books)) # QuerySet类型,类似于list,访问 url 时数据显示在命令行窗口中。
    return HttpResponse("<p>查找成功!</p>")

(2)fill方法

filter() 方法用于查询符合条件的数据。

返回的是 QuerySet 类型数据,类似于 list,里面放的是满足条件的模型类的对象,可用索引下标取出模型类的对象。

models.表名.objects.filter(条件)

示例:

from django.shortcuts import render,HttpResponse
from app01 import models 
def add_book(request):
    books = models.Book.objects.filter(pk=5)
    print(books)
    print("//")
    books = models.Book.objects.filter(publish='菜鸟出版社', price=300)
    print(books, type(books))  # QuerySet类型,类似于list。
    return HttpResponse("<p>查找成功!</p>")

(3)exclude() 方法

exclude() 方法用于查询不符合条件的数据。

返回的是 QuerySet 类型数据,类似于 list,里面放的是不满足条件的模型类的对象,可用索引下标取出模型类的对象。

models.表名.objects.exclude(条件)
from django.shortcuts import render,HttpResponse
from app01 import models 
def add_book(request):
    books = models.Book.objects.exclude(pk=5)
    print(books)
    print("//")
    books = models.Book.objects.exclude(publish='菜鸟出版社', price=300)
    print(books, type(books))  # QuerySet类型,类似于list。
    return HttpResponse("<p>查找成功!</p>")

(4)get() 方法

get() 方法用于查询符合条件的返回模型类的对象符合条件的对象只能为一个,如果符合筛选条件的对象超过了一个或者没有一个都会抛出错误。

 models.表名.objects.get(条件)

示例:

from django.shortcuts import render,HttpResponse
from app01 import models 
def add_book(request):
    books = models.Book.objects.get(pk=5)
    books = models.Book.objects.get(pk=18)  # 报错,没有符合条件的对象
    books = models.Book.objects.get(price=200)  # 报错,符合条件的对象超过一个
    print(books, type(books))  # 模型类的对象
    return HttpResponse("<p>查找成功!</p>")

(5)order_by() 方法

order_by() 方法用于对查询结果进行排序。

返回的是 QuerySet类型数据,类似于list,里面放的是排序后的模型类的对象,可用索引下标取出模型类的对象。

models.表名.objects.order_by(名称)

示例:

from django.shortcuts import render,HttpResponse
from app01 import models 
def add_book(request):
    books = models.Book.objects.order_by("price") # 查询所有,按照价格升序排列 
    books = models.Book.objects.order_by("-price") # 查询所有,按照价格降序排列
    return HttpResponse("<p>查找成功!</p>")

(6)reverse() 方法

reverse() 方法用于对查询结果进行反转。

返回的是 QuerySe t类型数据,类似于 list,里面放的是反转后的模型类的对象,可用索引下标取出模型类的对象。

 models.表名.objects.order_by("-price").reverse()

示例:

from django.shortcuts import render,HttpResponse
from app01 import models 
def add_book(request):
    # 按照价格升序排列:降序再反转
    books = models.Book.objects.order_by("-price").reverse()
    return HttpResponse("<p>查找成功!</p>")

更多方法详情见菜鸟教程Django ORM – 单表实例 | 菜鸟教程Django ORM - 单表实例 阅读本章节前你需要先阅读了 Django 模型 进行基础配置及了解常见问题的解决方案。 接下来我们重新创建一个项目 app01(如果之前已创建过,忽略以下操作): django-admin.py startproject app01 接下来在 settings.py 中找到 INSTALLED_APPS 这一项,如下: INSTALLED_APPS = ( 'django.c..https://www.runoob.com/django/django-orm-1.html

3.4.3删除

(1)方式1

使用模型类的 对象.delete()。返回值:元组,第一个元素为受影响的行数。

models.表名.objects.filter(条件).first().delete()

示例:

books=models.Book.objects.filter(pk=8).first().delete()

(2)方式2

使用 QuerySet 类型数据.delete()(推荐)。返回值:元组,第一个元素为受影响的行数。

models.表名.objects.filter(条件).delete()

示例:

books=models.Book.objects.filter(pk__in=[1,2]).delete()

3.4.4修改

(1)方式1

模型类的对象.属性=更改的属性值

模型类的对象.save()

返回值:编辑的模型类的对象。

示例:

# -*- coding: utf-8 -*-
 
from django.http import HttpResponse
 
from TestModel.models import Test
 
# 数据库操作
def testdb(request):
    # 修改其中一个id=1的name字段,再save,相当于SQL中的UPDATE
    test1 = Test.objects.get(id=1)
    test1.name = 'Google'
    test1.save()

(2)方式2

QuerySet 类型数据.update(字段名=更改的数据)(推荐)

返回值:整数,受影响的行数

示例:


# -*- coding: utf-8 -*-
 
from django.http import HttpResponse
 
from TestModel.models import Test
 
# 数据库操作
def testdb(request):
   
    Test.objects.filter(id=1).update(name='Google')
    
    # 修改所有的列
    Test.objects.all().update(name='Google')
    
    return HttpResponse("<p>修改成功</p>")
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值