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包含路由

分组路由

相关推荐
大耳朵爱学习2 分钟前
掌握Transformer之注意力为什么有效
人工智能·深度学习·自然语言处理·大模型·llm·transformer·大语言模型
TAICHIFEI3 分钟前
目标检测-数据集
人工智能·目标检测·目标跟踪
qq_15321452649 分钟前
【2023工业异常检测文献】SimpleNet
图像处理·人工智能·深度学习·神经网络·机器学习·计算机视觉·视觉检测
洛阳泰山13 分钟前
如何使用Chainlit让所有网站快速嵌入一个AI聊天助手Copilot
人工智能·ai·llm·copilot·网站·chainlit·copliot
儿创社ErChaungClub22 分钟前
解锁编程新境界:GitHub Copilot 让效率翻倍
人工智能·算法
乙真仙人27 分钟前
AIGC时代!AI的“iPhone时刻”与投资机遇
人工智能·aigc·iphone
十启树43 分钟前
用Qt 对接‌百度AI平台
人工智能·qt·百度
极客代码1 小时前
OpenCV Python 深度指南
开发语言·人工智能·python·opencv·计算机视觉
simplesin1 小时前
OpenCV 1
人工智能·opencv·计算机视觉
giszz1 小时前
【开源大模型生态9】百度的文心大模型
人工智能·开源