[原创]Django 框架简介
Django 框架简介
1.下载&安装
# 法一: pip install Django==1.10.2 # 版本号 # 法二: git clone https://github.com/django/django.git # 最新开发版 # 法三: 官网右侧下载 tar.gz 包
1.2.验证是否安装
# 法一: python -m django --version # 得到版本号 # 法二: python3 >>> import django # 不报错
2.创建项目
django-admin startproject myblog # 不报错就创建成功了
2.1.项目目录、文件说明
- 项目根目录:
< manage.py 文件 > # 项目管理器,与项目进行交互的命令行工具集的入口 python manage.py --help # 有很多子命令 python manage.py runserver 9999 # 启动服务,指定端口端口为 9999,不指定端口时默认为 8000 < myblog 目录 > # 项目的一个容器 # 包含项目最基本的一些配置 < wsgi.py > # WSGI(Python Web Server Gateway Interface) # Python 服务器网管接口 # Python 应用与 Web 服务器之间的接口 < urls.py > # URL 配置文件 # Django 项目中所有地址(页面)都需要我们自己去配置其 URL < settings.py > # 项目的总配置文件 # 里面包含了数据库、Web应用、时间等各种配置 BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # 整个项目的根目录 SECRET_KEY = 'hfusaf2m4ot#7)fkw#di2bu6(cv0@opwmafx5n#6=3d%x^hpl6' # 安全码,防止跨站脚本攻击,创建项目时 Django 自动生成 DEBUG = False # 生产中不要打开,因为错误信息会直接抛给前端用户,不友好 ALLOWED_HOSTS = ['*'] # 允许访问的客户端IP INSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'django_q', 'sql', 'themis', 'common', ) # 我们写的程序都要写进来 MIDDLEWARE = ( 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'django.middleware.security.SecurityMiddleware', 'common.middleware.check_login_middleware.CheckLoginMiddleware', 'common.middleware.exception_logging_middleware.ExceptionLoggingMiddleware', ) # 中间件 ROOT_URLCONF = 'archery.urls' # URL 配置根文件 TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'common/templates')], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', 'common.utils.global_info.global_info', ], }, }, ] # 模板配置 LANGUAGE_CODE = 'zh-hans' TIME_ZONE = 'Asia/Shanghai' USE_I18N = True USE_TZ = False # 国际化相关 AUTH_PASSWORD_VALIDATORS = [ { 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', }, { 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', 'OPTIONS': { 'min_length': 9, } }, { 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', }, { 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', }, ] # 密码认证相关 STATIC_URL = '/static/' STATIC_ROOT = os.path.join(BASE_DIR, 'static') STATICFILES_DIRS = [os.path.join(BASE_DIR, 'common/static'), ] # 静态文件地址
3.创建应用
# 法一: # 进入项目中 manage.py 同级目录: python manage.py startapp blog # 应用名不允许与系统的模块名相同 添加应用名到 settings.py 中的 INSTALLED_APPS 里面 # 法二: # pycharm: 工具 --> "Run manage.py Task" (option + R) --> python manage.py startapp blog
3.1.应用目录
migrations/ # 数据迁移模块 admin.py # 后台管理系统配置 apps.py # 应用的配置 models.py # 数据模块,使用ORM框架,类似MVC结构中的模型Models test.py # 自动化测试模块 # Django 提供了自动化测试功能,在这里面编写测试脚本、语句 vews.py # 执行相应的代码所在模块 # 代码逻辑处理的主要文件 # 项目中大部分代码都在这里编写
4.测试——第一个示例
4.1.创建响应
< views.py > from django.shortcuts import render # 引入请求响应包 from django.http import HttpResponse # Create your views here. # Django 中每一个请求都由一个函数处理,参数默认约定 response def index(response): return HttpResponse('Hello World!')
< urls.py > # 每个 URL 都以 url 的形式写出来 # url 函数放在 urlpatterns 列表中 # url 函数三个参数:URL,对应方法,名称 # 法一: from django.contrib import admin from django.urls import path from blog import views # 新增 urlpatterns = [ path('admin/', admin.site.urls), path('index/', views.index), # 新增 ] # 法二: # 在根 urls.py 中引入 include # 在 app 目录下创建 urls.py,格式与根 urls.py 格式相同 # 根 urls.py 中 url 函数第2个参数改为 include('blog.urls') # 要注意两个 urls.py 中的 URL 参数,如果都有的话,访问需要两级 URL\URL\
< urls.py > from django.contrib import admin from django.urls import path, include # 新增 include urlpatterns = [ path('admin/', admin.site.urls), path('index/', include('blog.urls')), ]
< blog/urls.py > from django.urls import path, include from blog import views urlpatterns = [ path('', views.index), ]
4.2.启动
python3 manage.py runserver
5.Templates 目录说明
-
就是 HTML 文件
-
使用了 Django 模板语言(Django Template Language, DTL)
-
可以使用第三方模板(如 Jinja2)
-
模板引擎:修改 settings.py 中 TEMPLATES 参数中 BACKEND 参数
-
创建 template
-
app 目录下创建 templates 目录
-
在该目录下创建 html 文件
-
在 views.py 中返回render()
-
DTL
- render() 中支持 dict 参数
- dict 参数是后台传递到模板的参数,key 为参数名
- 模板中使用 {{ 参数名 }}
5.1.templates HTML冲突问题
-
Django 按照 INSTALLED_APPS 中添加顺序查找 templates
- 不同 app 下 templates 目录中的 同名.html 文件会造成冲突
-
解决
- 在 app 的 templates 目录下创建以 app 名为名称的目录
- 将 html 文件放入新创建的目录下
6.Models 目录说明
-
Django 中的 Models 是什么?
- 通常,一个Model 对应数据库的一张表
- Django 中 Models 以 class 的形式表现
- 它包含了一些基本字段以及数据的一些行为
-
ORM
-
对象关系映射(Object Relation Mapping)
-
实现了对象和数据库之间的映射
-
隐藏了数据访问的细节,不需要编写SQL语句
-
-
编写 Models
-
在应用根目录下创建 models.py,并引入 models 模块
-
创建 class,继承 models.Model,该类就是一张数据表
-
在 class 中创建字段
-
-
字段创建
- 字段即类里面的属性(变量)
class Article(models.Model): title = models.CharField(max_length=32, default='title') content = models.TextField(null=True)
- 生成数据表
- 命令行进入 manage.py 同级目录
python manage.py makemigrations <app>
- 会生成一个py文件,并且创建 model
blog/migrations/0001_initial.py - Create model Article python manage.py migrate <app>
- 真正执行插入操作
# Tracking file by folder pattern: migrations # Operations to perform: # Apply all migrations: blog # Running migrations: # Applying blog.0001_initial... OK
- 查看 SQL语句
- Django 会自动在
/migrations/ 目录下生产一直文件
- Django 会自动在
python manage.py sqlmigrate <app> <文件id>
- 默认 sqlite3 数据库在项目根目录下的 db.sqlite3
# BEGIN; # -- # -- Create model Article # -- # CREATE TABLE "blog_article" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "title" varchar(32) NOT NULL, "content" text NULL); # COMMIT;
7.查看、编辑 db.sqlite3
- 第三方轻量、免费软件 SQLite Expert Personal
8.admin
8.1.什么是 admin
- admin 是 Django 自带的一个功能强大的自动化数据管理洁面
- 被授权的用户可直接在 admin 中管理数据库
- Django 提供了许多针对 admin 的定制功能
8.2.配置admin
- 创建用户
python manage.py createsuperyuser Username: admin Email: Password: Password(again): # 密码8个字符以上
- admin 入口
localhost:8000/admin
- 调整admin语言为中文
< settings.py > LANGUAGE_CODE = 'zh-hans'
-
配置应用
-
在 app 下 admin.py 中引入 app 的 models 模块
-
编辑 admin.py
admin.site.register(models.Article)
-
作者: do康解U
出处: https://www.cnblogs.com/David-domain/>
关于作者:专注数据库、Python 开发、ROS、深度学习,请多多赐教!
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 原文链接 如有问题, 可邮件(iamkuboy@163.com)咨询.
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· Blazor Hybrid适配到HarmonyOS系统
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· 解决跨域问题的这6种方案,真香!
· 一套基于 Material Design 规范实现的 Blazor 和 Razor 通用组件库
· 数据并发安全校验处理工具类