Django的使用
三板斧的使用(HTTPResponse,render,redirect)
在Web应用程序中,请求和响应模式是非常重要的概念,当用户在浏览器地址栏输入一个URL或者点击某个链接时,会向服务器发送一个请求,服务器处理完这个请求后,会返回一个响应给浏览器,这就是典型的HTTP请求-响应模式
HttpResponse:用于返回数据给客户端的
render:加载html页面,渲染模板
redirect:重定向,(跳转到某个地方)
全局配置文件介绍
settings
import os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # 路径
SECRET_KEY = 'zn-jn3(bfqmhd$s$nj@x!qy_3gk@yssed%1!4mb_#a3l)bdi0(' # 加盐,可改
DEBUG = True # debug 模式,页面如果出错,会在页面上显示
ALLOWED_HOSTS = [] # 写主机,ip
INSTALLED_APPS = [ # 注册应用
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app01',
]
MIDDLEWARE = [ # 中间件
'django.middleware.security.SecurityMiddleware',
'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',
]
ROOT_URLCONF = 'pro_dj01.urls' # url 文件路径
TEMPLATES = [ # 配置模板,引擎
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')], # 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_APPLICATION = 'pro_dj01.wsgi.application' # 相当于wsgiref
DATABASES = { # 配置数据库
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
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',
},
]
LANGUAGE_CODE = 'en-us' # 语言
TIME_ZONE = 'Asia/Shanghai' # UTC时间
USE_I18N = True
USE_L10N = True
USE_TZ = False # 数据库使用的时间
# 相当于令牌,用于指定静态网页在根URL的路径,浏览器会通过这个静态文件夹路径去访问静态文件
STATIC_URL = '/static/' # 静态文件的配置
静态文件配置
静态文件:类似于html,css,js文件,图片等,(静态文件有多个,先从第一个开始找)
'静态文件就是不会在服务器端处理的文件'
‘一般把静态文件放在框架下的static文件夹下’
如果自己创建了static文件夹,那么在settings文件中需要添加路径
# static 文件的路径
STATICFILES_DIRS=[
os.path.join(BASE_DIR,'static')
]
建议:
在引入JS文件之前先引入jQuery文件,因为Bootstrap依赖于jQuery
当前引入的是本地文件,如果是外链文件请按照顺序配置
<script src="/static/jquery-1.9.1/jquery.min.js"></script>
<link href="/static/bootstrap-4.6.2-dist/css/bootstrap.min.css" rel="stylesheet">
<script src="/static/bootstrap-4.6.2-dist/js/bootstrap.min.js"></script>
动态解析:
{% load 路径名 %}
html代码:
{% load static %}
<meta charset="UTF-8">
<title>登陆页面</title>
<!-- jQuery and JavaScript Bundle with Popper -->
<script src="{% static '/jquery-1.9.1/jquery.min.js' %}"></script>
<link href="{% static '/bootstrap-4.6.2-dist/css/bootstrap.min.css'%}" rel="stylesheet">
<script src="{% static '/bootstrap-4.6.2-dist/js/bootstrap.min.js' %}"></script>
settings代码中的STATIC_URL路径名称就可以随便改
STATIC_URL = '/abc/'
request对象的方法
<form action="" method="post">
action提交方式:
1.不写默认提交当前地址
2.全写
3.只写后缀
'如果提交数据必须在form表单中定义name属性'
request.meth 方法会返回一个对象,而这个对象
request.POST 返回一个字典,可以直接对字典进行取值
request.GET 如果在URL上传值,可以使用request.GET.get() 取值
链接数据库
DATABASES = { # 配置数据库
'default': {
'ENGINE': 'django.db.backends.mysql',
'HOST': '127.0.0.1',
'PORT': 3306,
'USER': 'root',
'PASSWORD': 'root',
'NAME': 'mytest',
'CHARSET': 'utf8mb4'
}
}
import pymysql
pymysql.install_as_MySQLdb() 猴子补丁,把mysql_db文件换成了pymysql的文件
ORM介绍
**O是object,也就****类对象**的意思。
**R是relation,翻译成中文是关系,也就是关系数据库中****数据表**的意思。
**M是mapping,是****映射**的意思。
映射:
**类:sql语句table表**
**类成员变量:table表中的字段、类型和约束**
**类对象:sql表的表记录**
类名 >>> 表名
对象 >>> 一条记录
属性 >>> 一个字段
在models文件中定义类,一个类名就是一个表名,上面已介绍
from django.db import models
# Create your models here.
class Userinfo(models.Model):
username = models.CharField(max_length=32)
password = models.CharField(max_length=64)
创建完之后,在命令行执行 python manage.py makemigrations,这个命令只是给你生成记录,真正的表并没有生成
执行下面命令真正生成
python manage.py migrate
每次给models文件添加配置后,必须重新执行上面两个命令,否则不会生效
'类名写好之后一定要记住迁移命令'
为什么生成这么多的表名?
首先第一个是应用名,为了防止表名冲突
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)