Djiango框架第一战

Django框架简介

Django是基于python的重量级的开源框架。拥有高度定制的ORM和大量的API,简单的视图编写,优雅的URL,适合快速开发的模版,以及强大的管理后台。 最新的Django支持ASGI异步编程。www.djangoproject.com/

1,新版本特性

目前已经发展到4.2了,初学的我还在看3.0,不过用来学习够了,(https://blog.csdn.net/weixin_42908597/article/details/130376091?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522169772638916800182131419%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=169772638916800182131419&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-1-130376091-null-null.142^v96^pc_search_result_base7&utm_term=Django%E6%96%B0%E7%89%88%E6%9C%AC&spm=1018.2226.3001.4187) 这是一篇关于新版本特征的文章,主要是对于Python版本的更新和数据库支持以及ASGI的一些更新,具体点击上面的链接。

ASGI是异步网关协议接口,是介于网络协议服务和Python应用之间的标准接口,能够处理多种通用的协议类型,

1,Sync-only:只支持同步

2,Sync-native:原生异步,带有异步封装器

3,Async-native:原生异步,带有异步封装器

2,安装Django Web框架

pip install Django

创建项目

1,使用命令行创建项目

就是在你的项目目录下,使用命令行,最好是在虚拟环境下玩项目 使用命令

js 复制代码
django-admin startproject blog

该目录下会生成一些文件

Django项目中的文件及说明
文件 说明
manage.py 程序的执行入口
blog/init.py 空文件,告诉Python这是一个Python包
blog/asgi 项目运行在ASGI兼容的Web服务器上
settings.py 总配置文件,配置App,数据库,中间件,模版等
urls.py 路由配置文件,也可以是include其他路径下的urls.py
wsgi.py WSGI接口文件,用来处理Web请求

运行项目的话在终端等地方使用

python 复制代码
python manage.py runserver

创建应用

在Django项目中使用应用来完成不同模块的任务。一个项目包含多个应用,一个应用可以在多个项目中来使用。在Django中,一个应用就是一个包,都遵循着相同的约定。 python manage.py startapp article创建应用 ,这下就有两个应用目录了,

article目录中的文件及说明
文件 说明
init.py 空文件,告诉Python这是一个Python包
migrations 执行数据库迁移生成的脚本
domain.py 配置Django管理后台的文件
apps.py 单独配置用户添加的每一个app文件
models.py 创建数据库数据模型对象的文件
tests.py 用来编写测试脚本的文件
views.py 用来编写视图控制器的文件
创建完应用后,还需要在blog/settings.py中激活应用。
ini 复制代码
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'article.apps.ArticleConfig', #这一行是新增的,激活article应用
]

通常情况下,INSTALLED_APPS包括了一下Diango应用

  1. django.contrib.admin :管理员站点
  2. django.contrib.auth :认证授权系统
  3. django.contrib.contenttypes :内容类型系统
  4. django.contrib.sessions :会话框架
  5. django.contrib.messages :消息框架
  6. django.contrib.staticfiles :管理静态文件的框架

数据模型

在用Django编写数据库驱动的Web应用时,第一步就是定义模型(models),也就是数据库结构设计和附加的其他元数据。Django支持ORM(对象关系映射),所以可以使用模型类来操作关系型数据库

1,在应用中添加数据模型

在articles/models.py文件里,创建User模型类和Article模型类

python 复制代码
from django.db import models  # 引入django.db.models模块

class User(models.Model):
    """
    User模型类,数据模型应该继承于models.Model或其子类
    """
    id = models.IntegerField(primary_key=True)  # 主键
    username = models.CharField(max_length=30)  # 用户名,字符串类型
    email = models.CharField(max_length=30)     # 邮箱,字符串类型

class Article(models.Model):
    """
    Article模型类,数据模型应该继承于models.Model或其子类
    """
    id = models.IntegerField(primary_key=True)  # 主键
    title = models.CharField(max_length=120)    # 标题,字符串类型
    content = models.TextField()                # 内容,文本类型
    publish_date = models.DateTimeField()       # 出版时间,日期时间类型
    user = models.ForeignKey(User, on_delete=models.CASCADE) # 设置外键

docs.djangoproject.com/en/4.2/ref/...这是Django官方最完整的字段类型介绍。有需要可自行查看,

2,执行数据库迁移

创建完数据模型后,接下来就是执行数据库迁移。Django支持多种数据库,SQLite,MYSQL,MariaDB等,需要使用哪一个数据库在blog/settings.py下面设置就ok啦

安装数据库驱动程序后,这里使用的MYSQL,在blog/blog/init.py文件中添加

ini 复制代码
import pymysql
# 为实现版本兼容,此处设置mysqlclient的版本
pymysql.version_info = (1, 3, 13, "final", 0)
pymysql.install_as_MySQLdb()

python manage.py makemigrations生成迁移文件 python manage.py migrate迁移数据库,创建新表 创建好的表名称为"app名称+下划线+模型类名称小写"

迁移可以让开发者在开发过程中持续的改变数据库结构,而不需要重新删除和创建表;专注于数据库平滑升级,不丢失数据。实现数据迁移,改变模型,

  • 编辑models.py文件,改变模型
  • 运行python manage.py makemigrations生成迁移文件
  • 运行python manage.py migrate实现数据库迁移 数据库迁移被分成生成和应用两个命令,

3,了解Django数据API

进入交互式Python命令行,尝试Django创建的各种API python manage.py shell 在命令行可以使用python命令 例如导入from article.models import User,Article 使用类名.objects.CRUD增删改查,和之前的Flask一样

管理后台

生成一个后台管理系统 python manage.py createsuperuser输入管理员账户和密码,密码至少需要8个字符 创建完成后,重新启动服务器,在浏览器访问http://127.0.0.1:8000/admin即可访问项目后台管理页面,管理员页面默认的,可以自定义,后期再说,还没了解到。

路由

URL是Web服务的入口,路由urls是用来处理URL和函数之间关系到额调度器 Django的路由流程如下。 (1)查找全局的urlpatterns变量,即blog/urls.py文件中的urlpatterns变量 (2)按照先后顺序,对URL注意匹配urlpatterns列表中的每一个元素 (3)找到第一个匹配时停止查找,根据匹配结果执行相应的处理函数 (4)找到第一个匹配或者出现异常,Django进行错误处理

Django支持的路由形式

(1)精确字符串形式 (2)路径转换器形式 (3)正则表达式形式

使用include包含路由

分组路由

相关推荐
追光的蜗牛丿4 分钟前
目标检测中的ROI Pooling
人工智能·目标检测·计算机视觉
缘华工业智维4 小时前
工业设备预测性维护:能源成本降低的“隐藏钥匙”?
大数据·网络·人工智能
DooTask官方号5 小时前
跨语言协作新范式:阿里云Qwen-MT与DooTask的翻译技术突破
人工智能·ai·项目管理·机器翻译·dootask
凯禾瑞华养老实训室6 小时前
聚焦生活照护能力培育:老年生活照护实训室建设清单的模块设计与资源整合
大数据·人工智能·科技·ar·vr·智慧养老·智慧健康养老服务与管理
倔强青铜三6 小时前
苦练Python第64天:从零掌握多线程,threading模块全面指南
人工智能·python·面试
格林威7 小时前
偏振相机是否属于不同光谱相机的范围内
图像处理·人工智能·数码相机·计算机视觉·视觉检测·工业相机
A-大程序员7 小时前
【pytorch】合并与分割
人工智能·pytorch·深度学习
AI新兵7 小时前
AI大事记12:Transformer 架构——重塑 NLP 的革命性技术(上)
人工智能·自然语言处理·transformer
Dongsheng_20198 小时前
【汽车篇】AI深度学习在汽车零部件外观检测——刹车片中的应用
人工智能·汽车
LONGZETECH8 小时前
【龙泽科技】汽车转向悬架与制动安全系统技术1+X仿真教学软件(1.2.3 -初级)
人工智能·科技·汽车·汽车仿真教学软件·汽车教学软件