第二章 Django配置信息

第二章 Django配置信息

2.1基本配置信息

#settings.py
import os

#项目路径
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

#密钥配置
SECRET_KEY = '@@-b$-w0x3)ld6g_07dv6!+_1%%jgod+e=l6co(i7@xp1p6ixz'

#调试模式(开发调试阶段设置为True,部署上线应改为False)
DEBUG = True

#域名访问权限
#debug为True时,ALLOWED_HOSTS = [],项目只允许localhost或127.0.0.1在浏览器访问,当debug为False时,ALLOWED_HOSTS必须有值,否则程序无法启动。
ALLOWED_HOSTS = []
#ALLOWED_HOSTS = [“*”]
#允许所有域名访问

# Application definition
#app列表
INSTALLED_APPS = [
    #内置后台管理系统
    'django.contrib.admin',
    #内置用户认证系统
    'django.contrib.auth',
    #记录项目中的model元数据
    'django.contrib.contenttypes',
    #标识当前访问网站的用户身份,记录相关用户信息
    'django.contrib.sessions',
    #消息提示功能
    'django.contrib.messages',
    #查找静态资源路径
    'django.contrib.staticfiles',
    
    #添加在项目中创建的app名称
    'index',
]

2.2静态资源文件配置

1.静态资源路由

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/2.2/howto/static-files/
#DEBUG=True模式下,只能识别App目录下的static文件夹
STATIC_URL = '/static/'

2.静态资源集合

在不设置资源集合的情况下,浏览器只能访问到app目录下的static文件夹下的相关文件。

设置资源集合可以访问多个static目录下的资源

STATICFILES_DIRS=[
	#访问根目录下的static文件夹
    os.path.join(BASE_DIR,'static'),
    #访问index app目录下的静态资源文件夹Mystatic
    os.path.join(BASE_DIR,'index/Mystatic'),
    
]

浏览器访问图片的时候。路径都是http://127.0.0.1:8000/static/xxx.jpg,static是指资源路径STATIC_URL的值,不是特指文件夹名称,因为在Mystatic下的图片也可以通过以上路径访问。

3.静态资源部署

作用是在服务器上部署项目,实现服务器与项目的映射。收集整个项目的静态资源并存放在一个新的文件夹下,然后由这个文件夹与服务器之间构建映射关系。

STATIC_ROOT=os.path.join(BASE_DIR,'AllStatic')

​ 当DEBUG = True,Django会自动提供静态文件袋里服务,开发阶段不需要部署STATIC_ROOT。当DEBUG为False时,需要手动配置。

2.3媒体资源

在项目根目录下创建media文件夹,将媒体资源存放其中。

在配置文件中设置:

#设置媒体路由地址信息
MEDIA_URL='/media/'
#获取media文件夹的完整路径
MEDIA_ROOT=os.path.join(BASE_DIR,'media')

将media文件夹注册到Django中,打开项目文件下的urls.py文件,添加media路由地址:

from django.contrib import admin
from django.urls import path, re_path
#导入项目应用index
from index import views

#配置媒体文件夹media
from django.views.static import serve
from django.conf import settings

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.urls),
    
    re_path('media/(?P<path>.*)',serve,{'document_root':settings.MEDIA_ROOT},NAME='media'),
]

配置完成后可以通过http://127.0.0.1:8000/media/xxx.jpg正常访问

2.4模板配置

根目录下的templates文件夹下存放公用的模板文件,app目录下的templates文件夹下存放app使用的模板文件。

TEMPLATES = [
    {
    	#定义模板引擎
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        #模板所在路径*******重点配置路径可以有多个
        'DIRS': [
        	os.path.join(BASE_DIR, 'templates'),
        	#app目录下的模板文件
        	#os.path.join(BASE_DIR, 'index/templates'),
        ],
        #是否在app里查找模板文件
        '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',
            ],
        },
    },
]

2.5数据库配置

2.5.1.Django提供5种数据库引擎

'ENGINE': 'django.db.backends.sqlite3',#默认
'ENGINE': 'django.db.backends.mysql',
'ENGINE': 'django.db.backends.oracle',
'ENGINE': 'django.db.backends.postgresql',
'ENGINE': 'django.db.backends.postgresql_psycopg2',

2.5.2.默认sqlite3,配置如下

# Database
# https://docs.djangoproject.com/en/2.2/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

2.5.3.使用mysql数据库

(1)由于mysqldb 不支持python3,所以选择mysqlclient模块连接MySQL

pip install mysqlclient -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

#配置settings.py文件
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME':'Django_db',
        'USER':'root',
        'PASSWORD':'123456',
        'HOST':'127.0.0.1',
        'PORT':'3306',
    }
}

(2)使用pymysql连接MySQL,数据库伪装驱动

​ pip install pymysql

​ 在项目__init__.py文件中初始化:

#DjangoModel\__init__.py

import pymysql

pymysql.install_as_MySQLdb()

(3)创建数据库Django_db:

管理员身份打开命令提示符:

​ mysql -uroot -p123456

​ create database Django_db charset=utf8;

数据库创建完成

(4)进行数据迁移

python manage.py makemigrations
python manage.py migrate

(5)遇到问题:

​ (a)数据库版本与Django版本不符,迁移失败提示:

django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.

MySQLclient目前只支持到python3.4,因此如果使用的更高版本的python,需要修改如下:

通过路径查找C:\Python\Python37\Lib\site-packages\django\db\backends\mysql\base.py。在这个路径下找到如下地方:将if。。。注释

version=Database.version_info

#if version<(1,3,13):

#raise........

Django迁移数据库表报错AttributeError: ‘str’ object has no attribute 'encode’解决方案:

进入C:\Python\Python37\Lib\site-packages\django\db\backends\mysql,打开operations.py文件,

query = getattr(cursor, '_executed', None)
if query is not None:
    query = query.decode(errors='replace')
return query

​ (b)pycharm中加入MySQL数据库

driver选择mysql for 5.1

2.5.4多个数据库连接

在DATABASES 里设置多个键值对,实现多个数据库的连接:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME':'Django_db',
        'USER':'root',
        'PASSWORD':'123456',
        'HOST':'127.0.0.1',
        'PORT':'3306',
    },
    'MySqlite3':{
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    },
    'MyDjango':{
         'ENGINE': 'django.db.backends.mysql',
         'NAME':'MyDjango_db',
         'USER':'root',
         'PASSWORD':'123456',
         'HOST':'127.0.0.1',
         'PORT':'3306',
    },
}

当项目有多个模型时,可以将每个模型对应的数据表选择在一个数据库中生成,没有指明就默认在default的数据库中

2.6中间件配置

中间件的概念:用来处理django的请求与响应的框架级别的钩子。在全局范围内改变django的输入与输出。

MIDDLEWARE = [
    #内置的安全机制,保护用户与网站的通信安全
    'django.middleware.security.SecurityMiddleware',
    #session会话功能
    'django.contrib.sessions.middleware.SessionMiddleware',
    #处理请求信息,规范化请求内容
    'django.middleware.common.CommonMiddleware',
    #开启CSRF防护功能
    'django.middleware.csrf.CsrfViewMiddleware',
    #开启内置用户认证系统
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    #开启内置信息提示功能
    'django.contrib.messages.middleware.MessageMiddleware',
    #开启恶意程序单击劫持
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
#顺序不能随意更改

中间件可以定义五个方法,分别是:(主要的是process_request和process_response)

  • process_request(self,request)
  • process_view(self, request, view_func, view_args, view_kwargs)
  • process_template_response(self,request,response)
  • process_exception(self, request, exception)
  • process_response(self, request, response)

(具体使用参考:https://www.cnblogs.com/clschao/articles/10480419.html)

参考书籍《Django Web 应用开发实战》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
大学生就业服务平台管理系统按照操作主体分为管理员和用户。管理员的功能包括学生档案管理、字典管理、试卷管理、试卷选题管理、试题表管理、考试记录表管理、答题详情表管理、错题表管理、法律法规管理、法律法规收藏管理、法律法规留言管理、就业分析管理、论坛管理、企业管理、简历管理、老师管理、简历投递管理、新闻资讯管理、新闻资讯收藏管理、新闻资讯留言管理、学生信息管理、宣传管理、学生管理、职位招聘管理、职位收藏管理、招聘咨询管理、管理员管理。用户的功能等。该系统采用了Mysql数据库,Java语言,Spring Boot框架等技术进行编程实现。 大学生就业服务平台管理系统可以提高大学生就业服务平台信息管理问题的解决效率,优化大学生就业服务平台信息处理流程,保证大学生就业服务平台信息数据的安全,它是一个非常可靠,非常安全的应用程序。 管理员权限操作的功能包括管理新闻信息,管理大学生就业服务平台信息,包括考试管理,培训管理,投递管理,薪资管理等,可以管理新闻信息。 考试管理界面,管理员在考试管理界面中可以对界面中显示,可以对考试信息的考试状态进行查看,可以添加新的考试信息等。投递管理界面,管理员在投递管理界面中查看投递种类信息,投递描述信息,新增投递信息等。新闻信息管理界面,管理员在新闻信息管理界面中新增新闻信息,可以删除新闻信息。新闻信息类型管理界面,管理员在新闻信息类型管理界面查看新闻信息的工作状态,可以对新闻信息的数据进行导出,可以添加新新闻信息信息,可以编辑新闻信息信息,删除新闻信息信息
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值