Django快速入门
文章目录
- 一、安装
- 1.创建虚拟环境(virtualenv和virtualenvwrapper)
- 2. 安装django
- 二、改解释器
- 三、创建一个Django项目
- 四、项目目录
- 项目同名文件夹/settings.py
- 五、测试服务器启动
- 六、数据迁移
- 七、创建应用
- 八、基本视图
- 1. 返回响应 response
- 2. 渲染模板
Django官网:https://docs.djangoproject.com/en/4.2/
文档推荐看英文,看不懂就换中文吧

Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,即模型M,视图V和模版T。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。并于2005年7月在BSD许可证下发布。这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的。
2020年,Django 3.0发布。
2022年,Django 4.0发布。Django 4.0 将支持 Python 3.8、3.9与3.10
2023年,Django 4.2LTS发布,长期支持版本,会维护3年,在企业中我们建议使用LTS版本
Django每2年会推出全新的大版本。

LTS是长期支持版本的意思。
一、安装
1.创建虚拟环境(virtualenv和virtualenvwrapper)
创建虚拟环境
# 先打开cmd
# 安装virtualenv (windows操作系统)
pip install virtualenv virtualenvwrapper-win
# Linux
pip install virtualenv virtualenvwrapper# workon 查看虚拟环境
workon# mkvirtualenv 创建新的虚拟环境
mkvirtualenv env# rmvirtualenv 删除虚拟环境
# rmvirtualenv env# 进入虚拟环境
workon env
我们来装我们自己的jango
# 创建虚拟环境
mkvirtualenv envdjango4# 进入虚拟环境
workon envdjango4
2. 安装django
建议使用镜像,安装命令后面最好加一个4.2的版本,可以是4.2.1 也可以是4.2,用的是国内镜像douban,也可以用其他镜像,这样速度会快一些
pip install django==4.2 -i https://pypi.douban.com/simple
4.2是LTS长期支持版本,推荐使用,如果不写则会安装最新版本。
测试django是否安装成功
pip show django


pip freeze会输出所有在本地已安装的包(但不包括 pip、wheel、setuptools 等自带包),若需要输出内容与pip list一致,需使用pip freeze -all。
pip list查看所有的包

二、改解释器

点击添加本地解释器



选择C:\Users\用户名\Envs\虚拟环境\Scripts\python.exe,点击OK



点击OK,等待下面的进度条走完,等他加载完
三、创建一个Django项目
- 方式一: 进入到指定要存放项目的目录,执行
django-admin startproject MyFirstDjango来创一个名字为 MyFirstDjango 的工程

创建项目后,默认的目录结构:

- 方式二: 使用Pycharm专业版创建Django项目
File > new Project


C:\Users\用户名\Envs\虚拟环境\Scripts\python.exe

点击OK

创建项目后,目录结构会比第一种方式多一些文件夹:

四、项目目录
jango项目下面会有一个一样名字的文件夹,还有一些文件,这些东西名字不要去改它。
manage.py :· manage是管理的意思,manage.py是用于启动项目或者执行一些命令的文件。· 是Django用于管理本项目的命令行工具,之后进行站点运行,数据库自动生成等都是通过本文件完成。MyDjangoPro2/__init__.py· 告诉python该目录是一个python包,方便我们用Python管理,暂无内容,后期一些工具的初始化可能会用到MyDjangoPro2/settings.py· Django项目的配置文件,默认状态其中定义了本项目引用的组件,项目名,数据库,静态资源等MyDjangoPro2/urls.py· 维护项目的URL路由映射,即定义当客户端访问时由哪个模块进行响应。MyDjangoPro2/wsgi.py· 全称为Python Web Server Gateway Interface,即Python服务器网关接口,是Python应用与Web服务器之间的接口,用于Django项目在服务器上的部署和上线,一般不需要修改。MyDjangoPro2/asgi.py· 定义ASGI的接口信息,和WSGI类似,在3.0以后新增ASGI,相比WSGI,ASGI实现了异步处理,用于启动异步通信服务,比如:实现在线聊天等异步通信功能(类似Tornado异步框架)。它是用于存储asgi设定的文件,如果使用ASGI部署django会用到,一般情况下不需要更改。templates 模板目录user 就是刚刚设置的应用名称· migrations 迁移文件夹,以后迁移文件都会放在这里面· admin.py 后台管理系统,如果要配置后台管理系统就需要用到它· apps.py 就是当前应用的配置里面也没写什么,name = 'user',就是告诉你应用名称是什么· models.py 模型,存放模型的地方· tests.py 单元测试,如果要写单元测试用例的话可以在这写 · views.py 视图,写视图函数都在这里
项目同名文件夹/settings.py
"""
Django settings for MyDjangoPro2 project.Generated by 'django-admin startproject' using Django 4.2.这里是他的文档
For more information on this file, see
https://docs.djangoproject.com/en/4.2/topics/settings/For the full list of settings and their values, see
https://docs.djangoproject.com/en/4.2/ref/settings/
"""from pathlib import Path''' BASE_DIR 项目根目录Path(__file__) 当前这个文件的绝对路径.parent.parent 父目录的父目录Path(__file__).resolve().parent.parent得到的就是项目的路径以后我们去找项目目录下的文件或文件夹,就用 BASE_DIR / "子路径"
'''
# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent# 快速开始的文档
# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/4.2/howto/deployment/checklist/# SECRET_KEY 项目唯一的密钥,这个是方便它在内部加密、解密处理的时候 用到。
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'django-insecure-5ot-%22ub-!mi#-*hth-ac=dvo^)n1q*kbs+@lrsbv@2e1pq=g'# SECURITY WARNING: don't run with debug turned on in production!
# 是否使用调试模式,
# True:表示调试模式,自动重启,改了代码不用我们手动重启了,一般用于开发过程;
# False: 表示非调试模式,一般用于上线部署
DEBUG = True# 被允许的域名或IP
# 写法:
# *:表示通配符,匹配所有IP,也就是所有的IP都能访问我 ALLOWED_HOSTS = ['*'] 表示可以被其他任何电脑来访问我(局域网)
# 上线后可以指定某个IP,指定其他哪些服务器来访问我,如果所有电脑都能访问就是*
## ALLOWED_HOSTS = []
ALLOWED_HOSTS = ['*']# Application definition
# 定义应用
INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','user.apps.UserConfig', # 这里也可以直接写上 'user',# 我们自己写的应用一定要在这里定义一下,如果不写后面有一些功能会受到限制# 定义自己的应用# 'user',
]# 中间件
MIDDLEWARE = ['django.middleware.security.SecurityMiddleware','django.contrib.sessions.middleware.SessionMiddleware','django.middleware.common.CommonMiddleware','django.middleware.csrf.CsrfViewMiddleware', # 安全处理的,防止csrf攻击'django.contrib.auth.middleware.AuthenticationMiddleware','django.contrib.messages.middleware.MessageMiddleware','django.middleware.clickjacking.XFrameOptionsMiddleware',
]# 根路由
ROOT_URLCONF = 'MyDjangoPro2.urls' # 就是: 项目根目录\MyDjangoPro2\urls.py# 模板
TEMPLATES = [# 可以配置多个模板,一般配置一个模板就可以了{'BACKEND': 'django.template.backends.django.DjangoTemplates','DIRS': [BASE_DIR / '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',],},},
]# WSGI的目录: 根目录\MyDjangoPro2\wsgi.py
WSGI_APPLICATION = 'MyDjangoPro2.wsgi.application'# Database 数据库
# https://docs.djangoproject.com/en/4.2/ref/settings/#databasesDATABASES = {'default': { # 默认情况用到的是sqlite3数据库,经常用在手机端,或者一些小型数据库里面,因为他是单线程的'ENGINE': 'django.db.backends.sqlite3','NAME': BASE_DIR / 'db.sqlite3', # 这里路径会放在根目录下面,如果没有,运行之后就有了}# 注意:我们这里要用的话,只能用关系型数据库。如果用mysql要注意,它还要指定域名,IP、端口、用户名密码
}# Password validation
# https://docs.djangoproject.com/en/4.2/ref/settings/#auth-password-validators
# 密码验证的东西,这些都是Django内部的东西
AUTH_PASSWORD_VALIDATORS = [{'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',},{'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',},{'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',},{'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',},
]# Internationalization 国际化
# https://docs.djangoproject.com/en/4.2/topics/i18n/
# 主要是地区、语言的配置
LANGUAGE_CODE = 'en-us' # 语言,默认英语en-us, 中文zh-hans。它主要是后台管理系统会变中文TIME_ZONE = 'UTC' # 时区USE_I18N = TrueUSE_TZ = True# Static files (CSS, JavaScript, Images) 静态文件,主要是为html服务的
# https://docs.djangoproject.com/en/4.2/howto/static-files/STATIC_URL = 'static/'# Default primary key field type 默认主键字段的类型
# https://docs.djangoproject.com/en/4.2/ref/settings/#default-auto-fieldDEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
五、测试服务器启动
python manage.py runserver [ ip:port ]
如果只是改端口可以不用写IP,python manage.py runserver 8001
注意IP不能随便改,要么 127.0.0.1 ,要么就写成 0.0.0.0 (表示可以让局域网其他电脑来访问我),python manage.py runserver 0.0.0.0:8000
可以直接进行服务运行 默认执行起来的端口是8000也可以自己指定ip和端口:
1. 监听机器所有可用 ip (电脑可能有多个内网ip或多个外网ip):python manage.py runserver 0.0.0.0:8000
2.同时在settings.py中将ALLOWED_HOSTS=['*'] (让所有的电脑都能访问)
3.在其他局域网电脑上可以通过在浏览器输入 Django项目所在电脑的 IP:8000 来访问

注意:You have 18 unapplied migration(s) 意思是你有18个没有被应用的迁移文件。这个迁移文件每次创建新项目都会有这个提示,因为它创建项目的同时,在它内部有代码,它内部默认给了你18个迁移文件,它已经生成了迁移文件了,但这个迁移文件并没有同步到迁移文件里面去。这行信息你可以管也可以不管,因为我们现在还没有写自己的模型,如果你要用它内部的这些迁移文件,那么就要去做迁移。
如果你要
退出,按 Ctrl+C

如果用python manage.py runserver 0.0.0.0:8000启动,浏览器输入http://0.0.0.0:8000/ 是访问不了的,用
http://127.0.0.1:8000/或http://localhost:8000/或者http://自己的ip地址:8000/ 可以访问。
cmdipconfig查看自己ip
六、数据迁移
迁移的概念: 就是将模型映射到数据库的过程
生成迁移文件: python manage.py makemigrations
执行迁移: python manage.py migrate
不需要初始化迁移文件夹,每个应用默认有迁移文件夹migrations
db.sqlite3 迁移文件生成的表格直接打开是打不开的,我们直接使用PyCharm 数据库的可视化吧


db.sqlite3 是不需要创建数据库名字的,直接就是表,tables下这些是jango自带的一些数据库表

七、创建应用
如果项目当中功能很多模块很多,我们可能需要再创建多个App。
python manage.py startapp App创建名称为App的应用
我们创建新的App在settings.py默认情况下是没有注册(定义)的,使用应用前需要将应用配置到项目中,在settings.py中将应用加入到 INSTALLED_APPS选项中,后面就能使用这个App了。
应用目录介绍:
__init__.py:其中暂无内容,使得app成为一个包
admin.py:管理站点模型的声明文件,默认为空
apps.py:应用信息定义文件,在其中生成了AppConfig,该类用于定义应用名等数据
models.py:添加模型层数据类文件
views.py:定义URL相应函数,视图函数
migrations包:自动生成,生成迁移文件的
tests.py:测试代码文件

八、基本视图
1. 返回响应 response
我们打开 user\views.py
from django.shortcuts import renderfrom django.http import HttpResponse# 视图函数Views
def index(request):# pass# 返回响应 responsereturn HttpResponse('hello Django!!!')
路由在MyDjangoPro2\urls.py 里写
from django.contrib import admin
from django.urls import pathfrom user.views import *urlpatterns = [path('admin/', admin.site.urls),# 路由urlpath('index/', index)
]
python manage.py runserver 启动之后浏览器输入 http://127.0.0.1:8000/index/

2. 渲染模板
在视图模板里面除了返回 HttpResponse(‘hello Django!!!’) 这样的内容以外,还可以以渲染模板的方式。
在user应用中新建一个文件夹templates,注意单词不要写错了。在里面我们新建一个html,叫 index.html


index.html 代码
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Index页面</title>
</head>
<body><h1>Index页</h1><hr><h3>Hello Django</h3>
</body>
</html>
user\views.py
from django.shortcuts import renderfrom django.http import HttpResponse# 视图函数Views
def index(request):# pass# 返回响应 response# return HttpResponse('hello Django!!!')# 渲染模板render,渲染htmlreturn render(request, "index.html")
http://127.0.0.1:8000/index/

相关文章:
Django快速入门
文章目录 一、安装1.创建虚拟环境(virtualenv和virtualenvwrapper)2. 安装django 二、改解释器三、创建一个Django项目四、项目目录项目同名文件夹/settings.py 五、测试服务器启动六、数据迁移七、创建应用八、基本视图1. 返回响应 response2. 渲染模板…...
Python “牵手” 淘宝商品详情数据获取方法,淘宝API申请指南
淘宝详情接口 API 是淘宝开放平台提供的一种 API 接口,它可以帮助开发者获取淘宝商品的详细信息,包括商品的标题、描述、图片等信息。在淘宝电商平台的开发中,淘宝详情接口 API 是非常常用的 API,因此本文将详细介绍淘宝详情接口 …...
OpenScene
paper:OpenScene: 3D Scene Understanding with Open Vocabularies code: https://github.com/pengsongyou/openscene 摘要:传统的3D场景理解方法依赖于带标签的3D数据集,在有监督的情况下为单个任务训练模型。我们提出了OpenScene,一种替代性的方法,模型预测CLIP特征空…...
HDFS中的Trash垃圾桶回收机制
Trash垃圾桶回收机制 文件系统垃圾桶背景功能概述Trash Checkpoint Trash功能开启关闭HDFS集群修改core-site.xml删除文件到trash删除文件跳过从trash中恢复文件清空trash 文件系统垃圾桶背景 回收站(垃圾桶)是windows操作系统里的一个系统文件夹&#…...
segment-anything使用说明
文章目录 一. segment-anything介绍二. 官网Demo使用说明三. 安装教程四. python调用生成掩码教程五. python调用SAM分割后转labelme数据集 一. segment-anything介绍 Segment Anything Model(SAM)根据点或框等输入提示生成高质量的对象遮罩,…...
在魔塔社区搭建通义千问-7B(Qwen-7B)流程
复制以下语句 python3 -m venv myvenvsource myvenv/bin/activatepip install modelscope pip install transformers_stream_generator pip install transformers pip install tiktoken pip install accelerate pip install bitsandbytestouch run.py vi run.py复制下面代码粘…...
Redis 加入服务列表自启动
1、下载reids windows版本,选择zip格式下载 2、解压zip,并进入路径; 3、命令提示符(cmd) 进入解压后的路径后,输入指令:redis-server --service-install redis.windows.conf; 4、如…...
MyCat管理及监控——zookeeper及MyCat-web安装
1.MyCat管理 2.MyCat-eye 3.zookeeper安装 第一步:解压 第二部: 切换目录,创建data文件夹 第三步:修改zookeeper配置文件 这样zookeeper安装及配置就完成了 4.MyCat-web安装 注意mycat-web要与zookeeper关联,…...
基于spring boot的餐饮管理系统java酒店饭店菜谱 jsp源代码mysql
本项目为前几天收费帮学妹做的一个项目,Java EE JSP项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。 一、项目描述 基于spring boot的餐饮管理系统j 系统1权限ÿ…...
JVM分析工具JProfiler介绍及安装
目录 一、什么是JProfiler? 二、JProfiler 功能结构 1、分析代理 2、记录数据 3、快照 三、安装 一、什么是JProfiler? JProfiler是一个专业的工具,用于分析运行中的JVM内部发生的事情。当您的生产系统出现问题时,您可以…...
Nginx使用多个.conf文件配置虚拟主机server
使用 Nginx 配置多个虚拟机 server 服务。通常做法可以直接在 nginx.conf 文件中添加即可,如下事例: # nginx.confworker_processes 1;events {worker_connections 1024; }http {include mime.types;default_type application/octet-stream…...
nginx编译以及通过自定义生成证书配置https
1. 环境准备 1.1 软件安装 nginx安装编译安装以及配置https,需要gcc-c pcre-devel openssl openssl-devel软件。因此需要先安装相关软件。 yum -y install gcc-c pcre-devel openssl openssl-devel wgetopenssl/openssl-devel:主要用于nginx编译的htt…...
OpenAI 已为 GPT-5 申请商标,GPT-4 发布不到半年,GPT-5 就要来了吗?
据美国专利商标局(USPTO)信息显示,OpenAI已经在7月18日申请注册了“GPT-5”商标。 在这份新商标申请中,OpenAI将“GPT-5”描述为一种“用于使用语言模型的可下载计算机软件”。 继GPT-4发布之后,它预计将成为OpenAI下一…...
【Linux】深入理解进程概念
个人主页:🍝在肯德基吃麻辣烫 我的gitee:Linux仓库 个人专栏:Linux专栏 分享一句喜欢的话:热烈的火焰,冰封在最沉默的火山深处 文章目录 前言浅谈进程概念1. 进程和操作系统的联系2.描述进程的对象——PCB …...
Java课题笔记~ AspectJ 的开发环境(掌握)
AspectJ 的开发环境(掌握) (1) maven 依赖 <dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></depe…...
机器学习参数调优
手动调参 分析影响模型的参数,设计步长进行交叉验证 我们以随机森林为例: 本文将使用sklearn自带的乳腺癌数据集,建立随机森林,并基于泛化误差(Genelization Error)与模型复杂度的关系来对模型进行调参&…...
[Java基础]面向对象-关键字分析:this,static,final,super
系列文章目录 【Java基础】Java总览_小王师傅66的博客-CSDN博客 [Java基础]基本概念(上)(标识符,关键字,基本数据类型)_小王师傅66的博客-CSDN博客 [Java基础]基本概念(下)运算符,表达式和语句,分支,循环,方法,变量的作用域,递归调用_小王师傅66的博客-CSDN博客 [Java基础]…...
数据结构初阶--二叉树的顺序结构之堆
目录 一.堆的概念及结构 1.1.堆的概念 1.2.堆的存储结构 二.堆的功能实现 2.1.堆的定义 2.2.堆的初始化 2.3.堆的销毁 2.4.堆的打印 2.5.堆的插入 向上调整算法 堆的插入 2.6.堆的删除 向下调整算法 堆的删除 2.7.堆的取堆顶元素 2.8.堆的判空 2.9.堆的求堆的…...
NVM Command学习
ubuntu系统安装nvme-cli,可以在应用层发起命令。 sudo apt install nvme-cli$ sudo nvme --help nvme-1.9 usage: nvme <command> [<device>] [<args>]The <device> may be either an NVMe character device (ex: /dev/nvme0) or an nvme …...
TCP Socket 基础知识点(实例是以Java进行演示)
本篇根据TCP & Socket 相关知识点和学习所得进行整理所得。 文章目录 前言1. TCP相关知识点1.1 双工/单工1.2 TCP协议的主要特点1.3 TCP的可靠性原理1.4 报文段1.4.1 端口1.4.2 seq序号1.4.3 ack确认号1.4.4 数据偏移1.4.5 保留1.4.6 控制位1.4.7 窗口1.4.8 校验和1.4.9 紧…...
突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合
强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...
通过Wrangler CLI在worker中创建数据库和表
官方使用文档:Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后,会在本地和远程创建数据库: npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库: 现在,您的Cloudfla…...
ssc377d修改flash分区大小
1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...
C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
QT: `long long` 类型转换为 `QString` 2025.6.5
在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...
CMake控制VS2022项目文件分组
我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...
Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)
引言 在人工智能飞速发展的今天,大语言模型(Large Language Models, LLMs)已成为技术领域的焦点。从智能写作到代码生成,LLM 的应用场景不断扩展,深刻改变了我们的工作和生活方式。然而,理解这些模型的内部…...
FFmpeg avformat_open_input函数分析
函数内部的总体流程如下: avformat_open_input 精简后的代码如下: int avformat_open_input(AVFormatContext **ps, const char *filename,ff_const59 AVInputFormat *fmt, AVDictionary **options) {AVFormatContext *s *ps;int i, ret 0;AVDictio…...
面试高频问题
文章目录 🚀 消息队列核心技术揭秘:从入门到秒杀面试官1️⃣ Kafka为何能"吞云吐雾"?性能背后的秘密1.1 顺序写入与零拷贝:性能的双引擎1.2 分区并行:数据的"八车道高速公路"1.3 页缓存与批量处理…...
Java详解LeetCode 热题 100(26):LeetCode 142. 环形链表 II(Linked List Cycle II)详解
文章目录 1. 题目描述1.1 链表节点定义 2. 理解题目2.1 问题可视化2.2 核心挑战 3. 解法一:HashSet 标记访问法3.1 算法思路3.2 Java代码实现3.3 详细执行过程演示3.4 执行结果示例3.5 复杂度分析3.6 优缺点分析 4. 解法二:Floyd 快慢指针法(…...


