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

分组路由

相关推荐
小馒头学python4 分钟前
机器学习是什么?AIGC又是什么?机器学习与AIGC未来科技的双引擎
人工智能·python·机器学习
神奇夜光杯13 分钟前
Python酷库之旅-第三方库Pandas(202)
开发语言·人工智能·python·excel·pandas·标准库及第三方库·学习与成长
正义的彬彬侠16 分钟前
《XGBoost算法的原理推导》12-14决策树复杂度的正则化项 公式解析
人工智能·决策树·机器学习·集成学习·boosting·xgboost
Debroon26 分钟前
RuleAlign 规则对齐框架:将医生的诊断规则形式化并注入模型,无需额外人工标注的自动对齐方法
人工智能
羊小猪~~33 分钟前
神经网络基础--什么是正向传播??什么是方向传播??
人工智能·pytorch·python·深度学习·神经网络·算法·机器学习
AI小杨34 分钟前
【车道线检测】一、传统车道线检测:基于霍夫变换的车道线检测史诗级详细教程
人工智能·opencv·计算机视觉·霍夫变换·车道线检测
晨曦_子画38 分钟前
编程语言之战:AI 之后的 Kotlin 与 Java
android·java·开发语言·人工智能·kotlin
道可云40 分钟前
道可云人工智能&元宇宙每日资讯|2024国际虚拟现实创新大会将在青岛举办
大数据·人工智能·3d·机器人·ar·vr
人工智能培训咨询叶梓1 小时前
探索开放资源上指令微调语言模型的现状
人工智能·语言模型·自然语言处理·性能优化·调优·大模型微调·指令微调
zzZ_CMing1 小时前
大语言模型训练的全过程:预训练、微调、RLHF
人工智能·自然语言处理·aigc