[排错] Django 常见错误的解决

错误一:
1.1 在网页上出现的报错信息

DisallowedHost at /

Invalid HTTP_HOST header: '192.168.102.2:8000'. You may need to add '192.168.102.2' to ALLOWED_HOSTS.

Request Method: 	GET
Request URL: 	http://192.168.102.2:8000/
Django Version: 	1.11.6
Exception Type: 	DisallowedHost
Exception Value: 	

Invalid HTTP_HOST header: '192.168.102.2:8000'. You may need to add '192.168.102.2' to ALLOWED_HOSTS.

Exception Location: 	/root/project/django_env/lib64/python3.6/site-packages/django/http/request.py in get_host, line 113
Python Executable: 	/root/project/django_env/bin/python
Python Version: 	3.6.8
Python Path: 	

['/root/project/mysite',
 '/usr/lib64/python36.zip',
 '/usr/lib64/python3.6',
 '/usr/lib64/python3.6/lib-dynload',
 '/root/project/django_env/lib64/python3.6/site-packages',
 '/root/project/django_env/lib/python3.6/site-packages']

Server time: 	Thu, 27 Feb 2020 06:08:45 +0000

1.2 解决错误的方法

(django_env) [root@python mysite]# vi mysite/settings.py

将以下内容:

......
ALLOWED_HOSTS = []
......

修改为:

......
ALLOWED_HOSTS = ['*']
......

[内容] pip 工具的安装 (MacBook Air 版)

内容目录:

内容一:安装 pip2
1.1 下载 pip2
1.2 安装 pip2
1.3 删除 pip2
1.4 显示安装的 pip2
1.4.1 显示在 python 里有没有 pip 安装包
1.4.2 显示有没有 pip2 命令
1.4.3 升级 pip2

内容二:安装 pip3
2.1 准备安装 pip3 所需的环境
2.1.1 安装 python3
2.1.1.1 输入 python3 命令
2.1.1.2 在弹出的对话框里安装 python3
2.1.2 安装 xcode
2.1.2.1 输入 xcode-select –install 命令
2.1.2.2 在弹出的对话框里安装 xcode
2.2 安装 pip3
2.2.1 下载 pip3
2.2.2 安装 pip3
2.2.3 删除 pip3
2.2.4 显示安装的 pip3
2.2.4.1 显示在 python 里有没有 pip 安装包
2.2.4.2 显示有没有 pip3 命令
2.2.4.3 升级 pip3

具体的内容:

内容一:安装 pip2
1.1 下载 pip2

$ curl 'https://bootstrap.pypa.io/pip/2.7/get-pip.py' > get-pip.py

1.2 安装 pip2

$ sudo python get-pip.py

1.3 删除 pip2

$ rm get-pip.py

1.4 显示安装的 pip2
1.4.1 显示在 python 里有没有 pip 安装包

$ ls /Library/Python/2.7/site-packages/

(补充:这里以 Python 版本是 2.7 为例)

1.4.2 显示有没有 pip2 命令

$ which pip2

1.4.3 升级 pip2

$ sudo pip2 install --upgrade pip

内容二:安装 pip3
2.1 准备安装 pip3 所需的环境
2.1.1 安装 python3
2.1.1.1 输入 python3 命令

$ python3

2.1.1.2 在弹出的对话框里安装 python3

(步骤略)

2.1.2 安装 xcode
2.1.2.1 输入 xcode-select –install 命令

$ xcode-select --install

2.1.2.2 在弹出的对话框里安装 xcode

(步骤略)

2.2 安装 pip3
2.2.1 下载 pip3

$ curl 'https://bootstrap.pypa.io/pip/get-pip.py' > get-pip.py

2.2.2 安装 pip3

$ sudo python get-pip.py

2.2.3 删除 pip3

$ rm get-pip.py

2.2.4 显示安装的 pip3
2.2.4.1 显示在 python 里有没有 pip 安装包

$ ls /Library/Python/3.8/site-packages/

(补充:这里以 Python 版本是 3.8 为例)

2.2.4.2 显示有没有 pip3 命令

$ which pip3

2.2.4.3 升级 pip3

$ sudo pip3 install --upgrade pip

[内容] Django MVT 模式简介

内容一:Django MVT 模式的视图

         URL Dispatcher

Browser                  Views Models database

         Cache Templates

内容二:Django MVT 模式简介
2.1 访问页面

Browser –> URL Dispatcher –> Views Models –> Database

2.2 应答页面

Database –> Views Models –> URL Dispatcher –> Browser

[实验] Django 样式的实现

注意:

文中的 python 系统名、mysite 项目和 app 应用只是站主在本次操作中随意取的名称,读者可以根据自己的喜好换成任意别的名称

正文:

步骤目录:

步骤一:系统环境要求

步骤二:安装 Django
2.1 安装 Python3
2.2 创建并进入 Django 项目的目录
2.3 将 Django 项目的目录指定为 Django 环境
2.4 进入 Django 环境

步骤三:创建 mysite 项目
3.1 创建 mysite 项目
3.2 mysite 项目的目录
3.2.1 安装 tree 目录显示软件
3.2.2 显示 mysite 项目的目录
3.3 Django 项目目录介绍

步骤四:创建 myapp 应用
4.1 创建 myapp 应用
4.2 myapp 应用的目录
4.2.1 显示 myapp 应用的目录
4.2.2 Django 应用目录介绍

步骤五:配置 mysite 应用和 myapp 应用
5.1 在 myapp 应用中添加一个 css 样式
5.2 在 myapp 应用中添加一个 HTML 模板
5.3 在 myapp 应用中添加两个网页返回值的模块
5.4 在 myapp 应用中添加两个链接并设置对应的模块
5.5 在 mysite 应用中添加一个链接并链接 myapp 的链接
5.6 在 mysite 应用中导入 myapp 应用

步骤六:启动 Django 服务

步骤七:测试 Django css 样式

具体的操作步骤:

步骤一:系统环境要求

1) 服务器的系统需要是 openSUSE 15.2 版本
2) 服务器要关闭防火墙
3) 服务器系统要配置好可用的软件源(最好是软件数量最多的官方版本)
4) 服务器要能够连接外网

步骤二:安装 Django
2.1 安装 Python3

[root@python ~]# zypper -n install python3

(补充:在此次操作发生时,最新的 python 版本是 3.6.12)

2.2 创建并进入 Django 项目的目录

[root@python ~]# mkdir project
[root@python ~]# cd project

2.3 将 Django 项目的目录指定为 Django 环境

[root@python project]# python3 -m venv django_env

2.4 进入 Django 环境

[root@python project]# source django_env/bin/activate
(django_env) [root@python project]# pip install django

(补充:在此次操作发生时,最新的 Django 版本是 3.2)

步骤三:创建 mysite 项目
3.1 创建 mysite 项目

(django_env) [root@python project]# django-admin startproject mysite

3.2 mysite 项目的目录
3.2.1 安装 tree 目录显示软件

(django_env) [root@python project]# zypper -n install tree

3.2.2 显示 mysite 项目的目录

(django_env) [root@python project]# cd mysite
(django_env) [root@python mysite]# tree
.
├── manage.py
└── mysite
    ├── __init__.py
    ├── asgi.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py

1 directory, 5 files

3.3 Django 项目目录介绍

1) mysite 此 Django 项目的容器
2) manage.py 命令行工具,与 Django 项目进行交互
3) mysite/__init__.py 空文件,通知 Python 此项目是一个 Python 包
4) mysite/settings.py 此 Django 项目的配置文件
5) mysite/urls.py 此 Django 项目的 URL 声明和 Django 的网站“目录”
6) mysite/wsgi.py WSGI 兼容 Web 服务器的入口

步骤四:创建 myapp 应用
4.1 创建 myapp 应用

(django_env) [root@python mysite]# django-admin startapp myapp

4.2 myapp 应用的目录
4.2.1 显示 myapp 应用的目录

(django_env) [root@python mysite]# tree
.
├── manage.py
├── myapp
│   ├── __init__.py
│   ├── admin.py
│   ├── apps.py
│   ├── migrations
│   │   └── __init__.py
│   ├── models.py
│   ├── tests.py
│   └── views.py
└── mysite
    ├── __init__.py
    ├── asgi.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py

3 directories, 13 files

4.2.2 Django 应用目录介绍

1) users/app.py 此 Django 应用的容器
2) users/__init__.py 空文件,通知 Python 此项目是一个 Python 包
3) users/admin.py 此 Django 应用自带的后台管理相关的类
4) users/app.py 此 Django 应用指定应用名的文件
5) users/migrations.py 此 Django 应用通过 Python 代码生成数据库表时里面会产生一些迁移文件
6) users/models.py 可以在里面创建一些 Python 对象并通过这些对象在数据库里创建对应的表
7) users/test.py 此 Django 应用的测试文档
8) users/views.py 此 Django 应用的视图,接收前端数据,把数据传递给后端,响应相关页面

步骤五:配置 mysite 应用和 myapp 应用
5.1 在 myapp 应用中添加一个 css 样式

创建 mysite.myapp.static.myapp.style.css 并添加以下内容:

.title{
    text-align: center;
    color: brown;
}

.content{
    text-align: center;
    color: red;
}

5.2 在 myapp 应用中添加一个 HTML 模板

创建 mysite.myapp.templates.myapp.html1.html 并添加以下内容:

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title> {{ title }} </title>

    {% load static %}

    <link rel="stylesheet" type="text/css" href="{% static 'myapp/style.css' %}">

</head>
<body>
    <article>
        <h1 class='title'> {{ title }} </h1>
        <p class='content'> {{ content }} </p>
    </article>
</body>
</html>


补充:这里
1) {{ title }} 代表设置了一个名为 title 的变量
2) {{ content }} 代表设置了一个明为 content 的变量

5.3 在 myapp 应用中添加两个网页返回值的模块

在 mysite.myapp.views.py 中添加以下内容:

......
from django.shortcuts import render
......
def html1(request):
    return render(request, "myapp/html1.html", {"title":"html1","content":"This is html1"})

def html2(request):
    return render(request, "myapp/html1.html", {"title":"html2","content":"This is html2"})


补充:这里以
1) 设置 html1 模块并返回 myapp/html1.html 设置 title 的变量是 “html1” 且 content 变量是 “This is html1” 的值
2) 设置 html2 模块并返回 myapp/html1.html 设置 title 的变量是 “html2” 且 content 变量是 “This is html2” 的值
为例

5.4 在 myapp 应用中添加两个链接并设置对应的模块

创建 mysite.myapp.urls.py 并添加以下内容:

from django.conf.urls import url
from myapp.views import html1,html2

urlpatterns = [
    url('html1/', html1),
    url('html2/', html2),
]


补充:这里以
1) 设置 html1 链接对应 html1 模块为例
2) 设置 html2 链接对应 html2 模块为例

5.5 在 mysite 应用中添加一个链接并链接 myapp 的链接

在 mysite.mysite.urls.py 中添加以下内容:

......
from django.conf.urls import url, include
......
urlpatterns = [
......
    url(r'^page/', include('myapp.urls')),
]

5.6 在 mysite 应用中导入 myapp 应用

在 mysite.mysite.settings.py 中添加以下内容:

......
INSTALLED_APPS = [
......
    'myapp',
]
......

步骤六:启动 Django 服务

(django_env) [root@python mysite]# python manage.py runserver 0.0.0.0:8000

(补充:这里以指定本地 8000 端口启动 Django 服务为例)

步骤七:测试 Django css 样式

打开浏览器输入以下网址:

http://127.0.0.1:8000/page/html1/
http://127.0.0.1:8000/page/html2/

[实验] Django 模板的实现

注意:

文中的 python 系统名、mysite 项目和 app 应用只是站主在本次操作中随意取的名称,读者可以根据自己的喜好换成任意别的名称

正文:

步骤目录:

步骤一:系统环境要求

步骤二:安装 Django
2.1 安装 Python3
2.2 创建并进入 Django 项目的目录
2.3 将 Django 项目的目录指定为 Django 环境
2.4 进入 Django 环境

步骤三:创建 mysite 项目
3.1 创建 mysite 项目
3.2 mysite 项目的目录
3.2.1 安装 tree 目录显示软件
3.2.2 显示 mysite 项目的目录
3.3 Django 项目目录介绍

步骤四:创建 myapp 应用
4.1 创建 myapp 应用
4.2 users 应用的目录
4.2.1 显示 users 应用的目录
4.2.2 Django 应用目录介绍

步骤五:配置 mysite 应用和 myapp 应用
5.1 在 myapp 应用中添加一个 HTML 模板
5.2 在 myapp 应用中添加两个网页返回值的模块
5.3 在 myapp 应用中添加两个链接并设置对应的模块
5.4 在 mysite 应用中添加一个链接并链接 myapp 的链接
5.5 在 mysite 应用中导入 myapp 应用

步骤六:启动 Django 服务

步骤七:测试 Django 模板

具体的操作步骤:

步骤一:系统环境要求

1) 服务器的系统需要是 openSUSE 15.2 版本
2) 服务器要关闭防火墙
3) 服务器系统要配置好可用的软件源(最好是软件数量最多的官方版本)
4) 服务器要能够连接外网

步骤二:安装 Django
2.1 安装 Python3

[root@python ~]# zypper -n install python3

(补充:在此次操作发生时,最新的 python 版本是 3.6.12)

2.2 创建并进入 Django 项目的目录

[root@python ~]# mkdir project
[root@python ~]# cd project

2.3 将 Django 项目的目录指定为 Django 环境

[root@python project]# python3 -m venv django_env

2.4 进入 Django 环境

[root@python project]# source django_env/bin/activate
(django_env) [root@python project]# pip install django

(补充:在此次操作发生时,最新的 Django 版本是 3.2)

步骤三:创建 mysite 项目
3.1 创建 mysite 项目

(django_env) [root@python project]# django-admin startproject mysite

3.2 mysite 项目的目录
3.2.1 安装 tree 目录显示软件

(django_env) [root@python project]# zypper -n install tree

3.2.2 显示 mysite 项目的目录

(django_env) [root@python project]# cd mysite
(django_env) [root@python mysite]# tree
.
├── manage.py
└── mysite
    ├── __init__.py
    ├── asgi.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py

1 directory, 5 files

3.3 Django 项目目录介绍

1) mysite 此 Django 项目的容器
2) manage.py 命令行工具,与 Django 项目进行交互
3) mysite/__init__.py 空文件,通知 Python 此项目是一个 Python 包
4) mysite/settings.py 此 Django 项目的配置文件
5) mysite/urls.py 此 Django 项目的 URL 声明和 Django 的网站“目录”
6) mysite/wsgi.py WSGI 兼容 Web 服务器的入口

步骤四:创建 myapp 应用
4.1 创建 myapp 应用

(django_env) [root@python mysite]# django-admin startapp myapp

4.2 users 应用的目录
4.2.1 显示 users 应用的目录

(django_env) [root@python mysite]# tree
.
├── manage.py
├── myapp
│   ├── __init__.py
│   ├── admin.py
│   ├── apps.py
│   ├── migrations
│   │   └── __init__.py
│   ├── models.py
│   ├── tests.py
│   └── views.py
└── mysite
    ├── __init__.py
    ├── asgi.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py

3 directories, 13 files

4.2.2 Django 应用目录介绍

1) users/app.py 此 Django 应用的容器
2) users/__init__.py 空文件,通知 Python 此项目是一个 Python 包
3) users/admin.py 此 Django 应用自带的后台管理相关的类
4) users/app.py 此 Django 应用指定应用名的文件
5) users/migrations.py 此 Django 应用通过 python 代码生成数据库表时里面会产生一些迁移文件
6) users/models.py 可以在里面创建一些 Python 对象并通过这些对象在数据库里创建对应的表
7) users/test.py 此 Django 应用的测试文档
8) users/views.py 此 Django 应用的视图,接收前端数据,把数据传递给后端,响应相关页面

步骤五:配置 mysite 应用和 myapp 应用
5.1 在 myapp 应用中添加一个 HTML 模板

创建 mysite/myapp/templates/myapp/html1.html 并添加以下内容:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title> {{ title }} </title>
</head>
<body>
    <article>
        <h1> {{ title }} </h1>
        <p> {{ content }} </p>
    </article>
</body>
</html>


补充:这里
{{ title }} 代表设置了一个名为 title 的变量
{{ content }} 代表设置了一个明为 content 的变量

5.2 在 myapp 应用中添加两个网页返回值的模块

在 mysite/myapp/views.py 中添加以下内容:

......
from django.shortcuts import render
......
def html1(request):
    return render(request, "myapp/html1.html", {"title":"html1","content":"This is html1"})

def html2(request):
    return render(request, "myapp/html1.html", {"title":"html2","content":"This is html2"})


补充:这里以
1) 设置 html1 模块并返回 myapp/html1.html 设置 title 的变量是 “html1” 且 content 变量是 “This is html1” 的值
2) 设置 html2 模块并返回 myapp/html1.html 设置 title 的变量是 “html2” 且 content 变量是 “This is html2” 的值
为例

5.3 在 myapp 应用中添加两个链接并设置对应的模块

创建 mysite/myapp/urls.py 并添加以下内容:

from django.conf.urls import url
from myapp.views import html1,html2

urlpatterns = [
    url('html1/', html1),
    url('html2/', html2),
]

(补充:这里以设置 html 链接对应 html1 模块为例)

5.4 在 mysite 应用中添加一个链接并链接 myapp 的链接

在 mysite/mysite/urls.py 中添加以下内容:

......
from django.conf.urls import url, include
......
urlpatterns = [
......
    url(r'^page/', include('myapp.urls')),
]

5.5 在 mysite 应用中导入 myapp 应用

在 mysite/mysite/settings.py 中添加以下内容:

......
INSTALLED_APPS = [
......
    'myapp',
]
......

步骤六:启动 Django 服务

(django_env) [root@python mysite]# python manage.py runserver 0.0.0.0:8000

步骤七:测试 Django 模板

打开浏览器输入以下网址:

http://127.0.0.1:8000/page/html1/
http://127.0.0.1:8000/page/html2/