栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python之Django框架(一)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python之Django框架(一)

Django project 前言:

官方文档:https://docs.djangoproject.com/zh-hans/3.0/

注意:Python Web的基础服务架构有两大分支,WSGI和ASGI。目前来看,所以的Web架构都支持WSGI,对于Django而言,2.x版本没有ASGI, 3.X有ASGI.(网关接口是用于Web应用与Web服务器进行通讯。其中WSGI、ASGI是专为python设计的网关接口。uwsgi是uWSGI服务器自有的传输协议 .)

拓展:

Web服务器网关接口(Python Web Server Gateway Interface),缩写为WSGI,它是一种专为python定义的接口规范,用于web服务端和web应用(框架)之间的连接通俗的理解,WSGI也是一种规范协议,

异步网关接口(Asynchronous Server Gateway Interface),是WSGI的扩展版本,旨在为Python Web服务、框架和应用之间提供一个标准的异步接口。其本身可以提供同步和异步应用,并且可以并行处理。还能处理多种通用协议,包括HTTP,HTTP2和WebSocket。

1.创建空白项目

点击“Create"

[外链图

拓展:

激活Django环境

2.安装django包

[拓展]:在django的交互环境里查看版本

在python.console里面也可以验证

2.1 django-admin命令

3.创建应用

manage.py:一个让你用各种方式管理Django项目的命令行工具

# 原始建法
django-admin startapp 

# 当用manage.py脚本后
python manage.py startapp

4.启动项目

还可以自定义端口

也可以指定IP的绑定的host:

python manage.py runserver 0:9000

0:表示0.0.0.0,绑定当前host主机的实际IP地址

在浏览器中,如果要访问本地的IP地址,可以访问:
- http://localhost:9000
- http://127.0.0.1:9000
- http://(通过终端查询到的ip地址):9000

[注意]

修改主工程目录下的settings.py文件

ALLOWED_HOSTS = ['*']    # 白名单

4.创建登录应用
python manage.py startapp login

应用目录结构:
- migrations 包含所有生成当前应用的数据模型迁移文件脚本
- apps.py 应用的配置信息
- admin.py 配置站点下的应用信息
- models.py 应用的所有模型类声明所在的脚本
- tests.py 应用测试的脚本
- views.py 应用的所有Web接口
- Django采用 MVC设计思想,设计出自己的MTV,字母一一对应。m对m,v对t,c对v
- 在views中,角色是Controller控制器,通过Models将数据加载出来,再通过T(emplate)模板将数据渲染出来,最后将渲染后的HTML封装成Response响应对象返回给Django框架
- models数据模型,采用了ORM框架,实现数据的CURD操作。同时支持模型之间的外键关联操作
- template 将数据渲染出来
5.应用 5.1 创建Web接口

在login应用中的views.py里,写如下代码

from django.http import HttpResponse
from django.shortcuts import render

# Create your views here.

def index(request):
    return HttpResponse('hello world')

在主工程的主路由里面,添加如下代码,并启动

效果展示:

还可以创建子路由来访问Web

- 使用子路由时,将子路由添加到主路由里

主路由修改:

子路由修改

login里views里的接口修改:

重写启动项目,效果如下:


[注意] view处理函数的参数必须包含request,它是WSGIRequest类的实例,也是HttpRequest的子类。可以从request对象中获取客户端请求的路径以及请求头和body数据。

5.2 配置数据库信息

5.3 写models

需要注意的点:

第一步,配置数据库,采用默认的数据库sqlite3(后面可替换成其他数据库)

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

第二步,创建模型类,在login模块的models.py添加如下代码:

class User(models.Model):
    # 默认情况下,存在id字段
    # 也就是说不设置主键,它会自己添加一个id字段,下行中设置了主键,数据表中就不会出现默认的id字段了
    user_id = models.IntegerField(primary_key=True)
    # 最大20个字符,不重复
    name = models.CharField(max_length=20,unique=True)
    pwd = models.CharField(max_length=100)

第三步,在主设置配置

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'login',
]

第四步,生成数据表(模型类)的迁移文件

python manage.py makemigrations

[注意] 确认模型类所在的app是否添加到settings.py的INSTALLED_APPS列表中。(即做第四步的时候要完成第三步)

第五步,执行数据模型类的迁移文件

python manage.py migrate

[注意]:1.打开表的时候,需要reload刷新一下

​ 2.此时表名的以"模块名_类名"命名的

【注意1】 第一次迁移时,会自动迁移django自带app下的迁移文件

【注意2】 如果修改了模型类,必须要’makemigrations’和’migrate’操作

python manage.py makemigrations
python manage.py migrate
5.4 修改模型
phone = models.CharField(max_length=11,null=True)
email = models.CharField(max_length=50,null=True)

拓展一下:

5.5生成SQL语句
python manage.py sqlmigrate 应用名  编号

5.6 shell调试模型

添加两条数据,进行测试

拓展:

命令:

python manage.py shell
>>> from login.models import User
>>> User.objects.all()

【注意】objects是什么?

- objects是Model的元类中创建Manage类的实例,也是QuerySet查询结果类实例
- objects提供了对模型的查询相关方法

5.6.1 模型类操作

查询数据

User.objects.all()查询所有的数据,返回可迭代的对象(QuerySet实例),元素是模型类的实例对象。

issubclass() 方法用于判断参数 class 是否是类型参数 classinfo 的子类。

查看QuerySet的方法

QuerySet常用的实例方法
- all()  全部查询
- first() 查第一个
- last()  查最后一个
- get(属性名=属性值)  查指定的    # pk主键列名属性
- delete()   删除
- filter(属性名=属性值) 过滤查询
- count()  统计记录个数

5.6.2 创建模型类实例
# 方式一
>>> u1 = User(name='a',pwd='1',phone='123345')
>>> u1.save()
# 方式二
>>> u3 = User()
>>> u3.name='ee'
>>> u3.pwd='133'
>>> u3.phone='5433'
>>> u3.save()

模型类实例方法:

- save() 保存数据
- delete() 删除数据
- refresh_from_db() 同步数据 (从数据库的表中更新当前实例的属性)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/953514.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号