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文件添加配置后,必须重新执行上面两个命令,否则不会生效
'类名写好之后一定要记住迁移命令'

image
为什么生成这么多的表名?

首先第一个是应用名,为了防止表名冲突

posted @   家购诗  阅读(4)  评论(0编辑  收藏  举报
编辑推荐:
· 从 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)
点击右上角即可分享
微信分享提示