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

分组路由

相关推荐
夜幕龙5 分钟前
iDP3复现代码数据预处理全流程(二)——vis_dataset.py
人工智能·python·机器人
吃个糖糖22 分钟前
36 Opencv SURF 关键点检测
人工智能·opencv·计算机视觉
AI慧聚堂34 分钟前
自动化 + 人工智能:投标行业的未来是什么样的?
运维·人工智能·自动化
盛世隐者35 分钟前
【pytorch】循环神经网络
人工智能·pytorch
cdut_suye1 小时前
Linux工具使用指南:从apt管理、gcc编译到makefile构建与gdb调试
java·linux·运维·服务器·c++·人工智能·python
开发者每周简报1 小时前
微软的AI转型故事
人工智能·microsoft
古希腊掌管学习的神1 小时前
[机器学习]sklearn入门指南(1)
人工智能·python·算法·机器学习·sklearn
普密斯科技2 小时前
手机外观边框缺陷视觉检测智慧方案
人工智能·计算机视觉·智能手机·自动化·视觉检测·集成测试
四口鲸鱼爱吃盐2 小时前
Pytorch | 利用AI-FGTM针对CIFAR10上的ResNet分类器进行对抗攻击
人工智能·pytorch·python
lishanlu1362 小时前
Pytorch分布式训练
人工智能·ddp·pytorch并行训练