【Python】在Django中娱乐(设置和显示HTML文件)

关于这篇文章

最近,我发布了一些关于 PHP 框架「Laravel」的文章。
想知道其他框架的感觉,所以这次我尝试了 Python 的框架「Django」。
我计划试试其他各种框架。

环境

操作系统:Windows 10 家庭版
Python 版本:3.9.2
Django 版本:3.1.7

安装Python

如果您尚未安装Python,则请安装它。您可以前往下载安装网站。

我尝试安装了最新版本的Python 3.9.2(截至2021年2月20日)。安装完成后,为了便于通过命令轻松使用Python,我在环境变量中添加以下内容。

・~/Python39 (Python3.9版本)
・~/Python39/script (Python3.9版本的脚本)

Django的安装

使用pip安装Django。

pip install django

这就完成了。

创建一个Django项目

请按照以下步骤创建项目:
将项目文件夹路径设置为您想要安装的路径,然后使用以下命令进行创建。

django-admin startproject demosite

「demosite」是每个人设定的项目名称。
创建完成了。

我会确认是否成功地创建了。我会切换到创建的项目文件夹。

cd demosite

随后,将在以下地点进行项目执行。

python manage.py runserver
image.png
image.png

展示HTML文件

我将尝试显示我自己创建的HTML文件。这次我创建了一个名为demosite的项目文件,但本来应该创建一个名为应用程序文件夹的东西,但可能会变得复杂,所以这次我会继续进行而不创建。

创建HTML文件

首先,在项目文件夹的根目录下创建一个名为templates的文件夹。然后将HTML文件放在这个文件夹里面。我们可以先创建一个名为sample.html的文件,并按照以下方式进行设置。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>てすと<ぺーじ/title>
    </head>
    <body>
        <h1>【Python】Djangoで遊ぶ</h1>
    </body>
</html>

编辑设置文件

然后,我们需要修改demosite/demosite目录下的设置文件settings.py。
※在这里「demosite」是项目名,请将其替换为您自己的项目文件名。

"""
Django settings for demosite project.

Generated by 'django-admin startproject' using Django 3.1.7.

For more information on this file, see
https://docs.djangoproject.com/en/3.1/topics/settings/

For the full list of settings and their values, see
https://docs.djangoproject.com/en/3.1/ref/settings/
"""

from pathlib import Path
import os #追加

# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent


# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/3.1/howto/deployment/checklist/

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = '-7w5go^j$%*@%106xkw1+bf)(h#m9xv5xj938@zv0j6u8^q-oq'

# 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 = 'demosite.urls'

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [
            os.path.join(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',
            ],
        },
    },
]

WSGI_APPLICATION = 'demosite.wsgi.application'


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

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}


# Password validation
# https://docs.djangoproject.com/en/3.1/ref/settings/#auth-password-validators

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',
    },
]


# Internationalization
# https://docs.djangoproject.com/en/3.1/topics/i18n/

LANGUAGE_CODE = 'ja' #変更

TIME_ZONE = 'Asia/Tokyo' #変更

USE_I18N = True

USE_L10N = True

USE_TZ = True


# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/3.1/howto/static-files/

STATIC_URL = '/static/'

在进行了追加和变更的地方已经添加了评论。

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [
            os.path.join(BASE_DIR, 'templates'), #追記
        ],

在这里设置模板文件夹的路径。
根据我的调查,虽然提到了在`os.path.join(BASE_DIR, ‘templates’)`上添加内容,但仅仅添加内容会导致错误。
必须明确指出要安装os模块。

所以,在开头的部分进行了以下补充:
python
导入os模块

LANGUAGE_CODE = ‘zh’ #变更

时区 = ‘亚洲/东京’ #更改

编辑urls.py

接下来,urls.py是管理在打开URL时的处理的文件。与Laravel中的Route类似,对吧?

我們將編輯urls.py文件如下。

from django.contrib import admin
from django.urls import path
from . import sample #追加

urlpatterns = [
    path('admin/', admin.site.urls),
    path('sample/', sample.index, name='sample'), #追加
]

“管理员/的地方从一开始就有记录。
在下面的示例/处添加了补充内容,并在示例/打开时写明处理sample.py文件的index函数。”

只需要一个选择,用中文进行以下原文的释义:
创建sample.py文件

创建一个新的sample.py文件,该文件在最后打开sample/时会进行处理。
在Laravel中,这可能类似于控制器(Controller)。

from django.shortcuts import render

def index(request):
    return render(request, 'sample.html')

index函数中的render返回一个HttpResponse对象。
这里表示返回的是sample.html。

显示示例页面

image.png

最后

我只是碰了一下这个问题。虽然我不确定这是否是基本流程,但我大概能理解Django框架的工作方式。

附言:这是一个2月20日的文章(直到睡觉之前是今天)。

广告
将在 10 秒后关闭
bannerAds