学习日记之《Django3 Web应用开发实战》——第二章——Django 配置信息——第三章——初探路由

第二章——Django 配置信息

1、静态资源和媒体资源

# settings.py
# Django只能识别项目应用APP的static文件夹的静态资源,这是由INSTALLED_APPS->django.contrib.staticfiles实现的
STATIC_URL = '/static/'   # 静态资源路由  

# 资源集合,列表中可设置多个访问静态资源的地址
STATICFILES_DIRS = [ BASE_DIR / 'StaticFiles']

# STATIC_ROOT主要收集整个项目的静态资源并存放在一个新的文件夹,然后由该文件夹与服务器之间构建映射关系
# 当项目的配置属性DEBUG设为True的时候,Django会自动提供静态文件代理服务(STATIC_URL),此时整个项目处于开发阶段,因此无须使用STATIC_ROOT。当配置属性DEBUG设为False的时候,意味着项目进入生产环境,Django不再提供静态文件代理服务,此时需要在项目的配置文件中设置STATIC_ROOT。
# 设置STATIC_ROOT需要使用Django操作指令collectstatic来收集所有静态资源,这些静态资源都会保存在STATIC_ROOT所设置的文件夹里。
STATIC_ROOT = BASE_DIR / 'Allstatic'  # 资源部署

# 媒体资源:存放媒体信息,如音视频,文件等
MEDIA_URL = "/media/"  # 媒体路由地址
MEDIA_ROOT = BASE_DIR / "media"  # 媒体路径信息

# 项目urls.py 设置
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from django.conf.urls.static import static
from django.conf import settings
from django.views.static import serve

方式一
urlpatterns += staticfiles_urlpatterns()
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
or
方式二
urlpatterns += [re_path("media/(?P<path>.*)", serve, {"document_root": settings.MEDIA_ROOT}, name='media')]

2、模板配置

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [BASE_DIR, 'templates'],   # 可自定义模板的位置 名称 templates 固定
        'APP_DIRS': True,  # 默认可以识别每个应用下的 templates
        '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',
            ],
        },
    },
]

3、数据库配置

连接mysql举例:

安装
pip3 install pymysql

在项目(和settings.py同目录)下的__init__.py设置
import pymysql
pymysql.install_as_MySQLdb()   # 设置数据库连接模块即可

MySQL配置方式

方式一:直接配置
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'django_db',   # 提前在MySQL中创建该名称的数据库
        'USER':'root',    # MySQL登录的用户名
        'PASSWORD': '123',   # MySQL登录的密码
        'HOST':'127.0.0.1',  
        'PORT':'3306',
    }
}
方式二:动态配置数据库连接
先创建一个连接数据库的配置信息,比如my.cnf
填写如下内容:
[client]
database=django_db
user=root
password=123
host=127.0.0.1
port=3306

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'OPTIONS':{'read_default_file':str(BASE_DIR / 'my.cnf')},
    }
}

多数据库连接配置
多数据库下,如果没有指定具体存储到那个数据库,默认存储到default名的数据库下。
DATABASES = {
    # 第一个数据库
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'django_db0',
        'USER':'root',
        'PASSWORD': '123',
        'HOST':'127.0.0.1',
        'PORT':'3306',
    },
    # 第二个数据库
    'mydjango': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'django_db1',
            'USER':'root',
            'PASSWORD': '123',
            'HOST':'127.0.0.1',
            'PORT':'3306',
        }
}

通过SSH隧道远程连接数据库
pip3 install sshtunnel

# 设置settings.py
# 数据库服务器的IP地址或主机名
ssh_host = 'XXX.XXX.XXX.XXX'
# 数据库服务器的SSH连接端口号,一般是22,必须是数字
ssh_port = 22
# 数据库服务器的用户名
ssh_user = 'root'
# 数据库服务器的密码
ssh_password = '123'

# 数据库服务器的mysql的主机名或IP
mysql_host = 'localhost'
# 数据库服务器的mysql的端口,默认是3306
mysql_port = 3306
# mysql的用户名
mysql_user = 'root'
# mysql的密码
mysql_password = '123'
# mysql的数据库名
mysql_db = 'mydjango'

from sshtunnel import open_tunnel

def get_ssh():
    server = open_tunnel(
        (ssh_host, ssh_port),
        ssh_username=ssh_user,
        ssh_password=ssh_password,
        # 绑定服务器的mysql数据库
        remote_bind_address=(mysql_host, mysql_port)
    )
    server.start()
    return str(server.local_bind_port)



DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': mysql_db,
        'USER':mysql_user,
        'PASSWORD': mysql_password,
        'HOST':mysql_host,
        'PORT':get_ssh(),
    }
}

4、中间件介绍

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',  # 内置安全机制,保护用户和网络的通信安全
    'django.contrib.sessions.middleware.SessionMiddleware',  # 会话Session功能
    'django.middleware.locale.LocaleMiddleware',   # 国际化和本地化中间件
    'django.middleware.common.CommonMiddleware',  # 处理请求信息,规范化请求内容
    'django.middleware.csrf.CsrfViewMiddleware',  # 开启CSRF防护功能
    'django.contrib.auth.middleware.AuthenticationMiddleware',  # 开启内置的用户认证系统
    'django.contrib.messages.middleware.MessageMiddleware',  # 开启内置的信息提示功能
    'django.middleware.clickjacking.XFrameOptionsMiddleware',  # 防止恶意程序单机劫持
]

第三章——初探路由

1、反向解析

from django.shortcuts import reverse   # 生成路由地址
from django.urls import resolve  # 通过路由地址生成路由对象

reverse('index:mydate', args=args)
reverse('index:mydate', kargs=kargs)

result= resolve(reverse('index:mydate', args=args))  # 了解一下生成的对象有哪些方法和属性

2、重定向

from django.shortcuts import redirect   # 指定跳转到指定的路由地址

redirect(reverse('index:mydate', args=args))   # 一种方式是使用路由
redirect('index:mydate', permanent=True)   # 一种方式是使用路由命名,可以指定是否永久重定向
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值