创建项目
通过PyCharm创建,点击file,new Project,弹窗中配置Django项目配置,仅需要配置解释器即可

创建好的项目目录如下:

Django配置文件
Django配置文件是一个settings.py文件,它包含了项目的所有配置选项。以下是一些常见的配置设置以及它们的作用:
-
SECRET_KEY: 一个密钥,用于安全的生成签名等。 -
DEBUG: 是否开启调试模式,开启后自动重载代码,显示更多错误信息。 -
ALLOWED_HOSTS: 允许访问的主机列表,为空时允许所有。 -
INSTALLED_APPS: 项目中安装的应用列表。 -
MIDDLEWARE: 中间件列表,用于处理请求和响应。 -
ROOT_URLCONF: 根URL配置模块。 -
TEMPLATES: 模板设置,包括模板目录等。 -
DATABASES: 数据库配置,包括引擎、用户、密码等。 -
LANGUAGE_CODE: 项目语言。 -
TIME_ZONE: 时区。 -
STATIC_URL: 静态文件的URL前缀。 -
STATIC_ROOT: 静态文件的根目录,用于收集静态文件。 -
MEDIA_URL: 媒体文件的URL前缀。 -
MEDIA_ROOT: 媒体文件的根目录。
这些配置项可以在settings.py文件中直接设置,或者通过环境变量、命令行参数、或者一个local_settings.py文件来覆盖。
示例代码:
# settings.py
import os
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'your-secret-key'
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
ALLOWED_HOSTS = ['*'] # 或者指定的域名列表
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# 你的应用列表
]
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 = 'your_project_name.urls'
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'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 = 'your_project_name.wsgi.application'
# Database
# https://docs.djangoproject.com/en/3.2/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
# Internationalization
# https://docs.dj
运行项目
Terminal执行:python manage.py runserver

按照命令提示执行:python manage.py migrate

点击链接出现下图,算是安装成功
自定义项目首页
创建一个index应用,用来配置网站首页:


配置view.py
from django.shortcuts import render
def index(request):
return render(request, 'index.html')
创建一个用来存放视图的文件夹:

在文件夹中创建自己的首页Index.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Hello World</title>
</head>
<body>
<h1>菜鸟的第一个网页</h1>
<p>This is a simple HTML page with a heading and a paragraph.</p>
<p>This is the second paragraph.</p>
<p>This is the third paragraph.</p>
</body>
</html>
配置settings.py,将index应用配置进去,同时指定视图目录:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'index',
]
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',
],
},
},
]
配置urls.py路由,配置一个根目录:
from django.contrib import admin
from django.urls import path
from index.view import index
urlpatterns = [
path('admin/', admin.site.urls),
path('', index),
]
重新运行项目,首页变为配置的index.html:

配置数据库连接:
需要配置settings.py文件,此处配置了多个连接,默认的为mysql,使用的驱动引擎为django.db.backends.mysql,可以根据自己需要配置不同类型的数据库

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': "dbname",
'USER': 'dbuser',
'PASSWORD': 'xxx',
'HOST': 'xxx',
'PORT': '3306',
},
"db_sqlite3": {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'sqlite3',
}
}
配置好数据库连接以后在控制台执行数据库迁移命令python manage.py migrate,会将Django 自带的 Admin 后台管理功能、Auth 用户认证功能以及会话机制等功能使用到的数据表创建至配置的mysql数据库:
xxx@xxxMacBook-Pro dataCenterWeb % python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying admin.0003_logentry_add_action_flag_choices... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying auth.0009_alter_user_last_name_max_length... OK
Applying auth.0010_alter_group_name_max_length... OK
Applying auth.0011_update_proxy_permissions... OK
Applying auth.0012_alter_user_first_name_max_length... OK
Applying sessions.0001_initial... OK
此时数据库中会创建成功如下数据表:
验证配置是否成功:
index.html视图内容改为:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Hello World</title>
</head>
<body>
<h1>菜鸟的第一个网页</h1>
<p>This is a simple HTML page with a heading and a paragraph.</p>
<p>This is the second paragraph.</p>
<p>This is the third paragraph.</p>
<ul>
{% for obj in objs %}
<li>{{ obj }}</li>
{% endfor %}
</ul>
</body>
</html>
view.py内容改为:
from django.contrib.contenttypes.models import ContentType
from django.shortcuts import render
def index(request):
obj = ContentType.objects.values_list().all()
return render(request, 'index.html', {'objs': obj})
访问网站首页:

和数据库中的数据做对比两者一致,说明配置文件连接到了数据库:

中间件
中间件配置也是在settings.py中,需要注意的是中间件 MIDDLEWARE 的值为列表,因此中间件的设置顺序非常重要,随意变更中间件的位置可能会导致功能异常
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',
]
| 中间件 | 作用 |
|---|---|
| SecurityMiddleware | 提供安全机制,保护用户与网站的通信安全。 |
| SessionMiddleware | Session 会话功能。 |
| CommonMiddleware | 处理请求信息,规范化请求内容。 |
| CsrfViewMiddleware | 启用 CSRF 防护功能。 |
| AuthenticationMiddleware | 启用内置的用户认证系统。 |
| MessageMiddleware | 提供信息提示功能。 |
| XFrameOptionsMiddleware | 防止恶意程序单击劫持。 |
大部分情况下django内置的中间件可满足我们的开发需求,同时也允许我们自定义中间件来处理用户请求信息和返回响应内容,自定义的中间件也需要配置到MIDDLEWARE中进行激活,否则不会生效
309

被折叠的 条评论
为什么被折叠?



