1.环境

1.安装Django

pip 命令安装方法

pip install Django

2.是否安装成功

进入cmd,输入python,输入以下字符,如果没有错误提示,证明按照成功

import django

进入你的工作空间,打开cmd输入

django-admin.py

会出现一堆

Usage: django-admin.py subcommand [options] [args]

Options:
  -v VERBOSITY, --verbosity=VERBOSITY
                        Verbosity level; 0=minimal output, 1=normal output,
                        2=verbose output, 3=very verbose output
  --settings=SETTINGS   The Python path to a settings module, e.g.
                        "myproject.settings.main". If this isn't provided, the
                        DJANGO_SETTINGS_MODULE environment variable will be
                        used.
  --pythonpath=PYTHONPATH
                        A directory to add to the Python path, e.g.
                        "/home/djangoprojects/myproject".
  --traceback           Raise on exception
  --version             show program's version number and exit
  -h, --help            show this help message and exit

Type 'django-admin.py help <subcommand>' for help on a specific subcommand.

Available subcommands:

[django]
    check
    cleanup
    compilemessages
    createcachetable
……省略部分……

没报错,就可以

3.创建第一个项目

使用 django-admin.py 来创建 HelloWorld 项目:

django-admin.py startproject HelloWorld 最新版的 Django 请使用 django-admin 命令:

django-admin startproject HelloWorld 创建完成后我们可以查看下项目的目录结构:

$ cd HelloWorld/
$ tree
.
|-- HelloWorld
|   |-- __init__.py
|   |-- settings.py
|   |-- urls.py
|   `-- wsgi.py
`-- manage.py

目录说明:

HelloWorld: 项目的容器。
manage.py: 一个实用的命令行工具,可让你以各种方式与该 Django 项目进行交互。
HelloWorld/__init__.py: 一个空文件,告诉 Python 该目录是一个 Python 包。
HelloWorld/settings.py: 该 Django 项目的设置/配置。
HelloWorld/urls.py: 该 Django 项目的 URL 声明; 一份由 Django 驱动的网站"目录"。
HelloWorld/wsgi.py: 一个 WSGI 兼容的 Web 服务器的入口,以便运行你的项目。

接下来我们进入 HelloWorld 目录输入以下命令,启动服务器:

python manage.py runserver 0.0.0.0:8000

访问项目 localhost:8000
如果出现正常的欢迎页面,就证明创建项目成功

4.HelloWorld

视图和 URL 配置
在先前创建的 HelloWorld 目录下的 HelloWorld 目录新建一个 view.py 文件,并输入代码:

HelloWorld/HelloWorld/view.py 文件代码:

from django.http import HttpResponse

def hello(request):
    return HttpResponse("Hello world ! ")

接着,绑定 URL 与视图函数。打开 urls.py 文件,删除原来代码,将以下代码复制粘贴到 urls.py 文件中:

HelloWorld/HelloWorld/urls.py 文件代码:

from django.conf.urls import url
 
from . import view
 
urlpatterns = [
    url(r'^$', view.hello),
]

2.创建模板

PS:一句话,模板就是静态页面

在 HelloWorld 目录底下创建 templates 目录并建立 hello.html文件,整个目录结构如下:

HelloWorld/
|-- HelloWorld
|   |-- __init__.py
|   |-- __init__.pyc
|   |-- settings.py
|   |-- settings.pyc
|   |-- urls.py
|   |-- urls.pyc
|   |-- view.py
|   |-- view.pyc
|   |-- wsgi.py
|   `-- wsgi.pyc
|-- manage.py
`-- templates
    `-- hello.html

html里面写

<h1>{{ hello }}</h1>

HelloWorld/HelloWorld/settings.py 文件代码:
注意注释地方,改这一处即可

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

HelloWorld/HelloWorld/view.py 文件代码:

# -*- coding: utf-8 -*-
 
#from django.http import HttpResponse
from django.shortcuts import render
 
def hello(request):
    context          = {}
    context['hello'] = 'Hello World!'
    return render(request, 'hello.html', context)

我们这里使用 render 来替代之前使用的 HttpResponse。render 还使用了一个字典 context 作为参数。

context 字典中元素的键值 “hello” 对应了模板中的变量 “{{ hello }}”。

再访问访问 http://127.0.0.1:8000/hello,可以看到页面

3.调整页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<div>
<h1>列表</h1>
<table border="1px" cellpadding="10px" cellspacing="0px">
    <tr>
         <th>ID</th>
         <th>Name</th>
         <th>Age</th>
         <th>操作</th>
    </tr>
    {% for user in userList %}
    <tr>
        <td width="100px">{{ user.ID }}</td>
        <td width="400px">{{ user.USER_NAME }}</td>
        <td width="20px">{{ user.USER_AGE }}</td>
        <td><a href="/delete?id={{user.ID}}">  刪除  </a></td>
    </tr>
    {% endfor %}
</table>
</div>

<hr/>

<div>
<h1>添加</h1>

    <form action="/add" method="get">
        {% csrf_token %}
<table border="1px" cellpadding="10px" cellspacing="0px">
    <tr>
         <td><span>ID:</span><input type="text" name="id"></td>
         <td><span>Name:</span><input type="text" name="name"></td>
         <td><span>Age:</span><input type="text" name="age"></td>
         <td><input class="button" type="submit"></input></td>
    </tr>
</table>

</form>
    </div>

</body>
</html>


<style>
    input{
        border: 2px solid black;
        padding-left: 20px;
        font-size: 20px;
    }
    span{
        padding: 20px;
        font-family: "Adobe Devanagari";
        font-weight: bolder;
        font-size: 25px;
    }
    .button{
        width: 70px;
        height: 40px;
        background-color: aquamarine;
        color: cornflowerblue;
         font-weight: bolder;
        font-size: 14px;
        opacity: 0.9;
        border-radius: 10px;
    }
    hr{
        width: 80%;
        height: 2px;
        margin: 20px;
    }
    a{
        width: 220px;
        height: 40px;
        background-color: deepskyblue;
        color: black;
        font-weight: bolder;
        font-size: 14px;
        opacity: 0.9;
        border-radius: 10px;
    }
</style>

4.写逻辑代码

#from django.http import HttpResponse

import pymysql # 数据库驱动
from django.http import HttpResponse # http响应
from django.shortcuts import render #跳转页面
from django.views.decorators import csrf

#数据库连接
connection = pymysql.connect(host='127.0.0.1', port=3306, user='root',
                             password='root', db='test',charset='utf8',
                             cursorclass=pymysql.cursors.DictCursor)
#创建数据库连接“执行”对象
cur = connection.cursor()


#当我第一次进页面的时候,查询全部
def hello(request):
    context = {} #封装返回参数
    sql = "SELECT * FROM user_py"
    # 执行SQL语句
    cur.execute(sql)
    # 获取所有记录列表
    results = cur.fetchall()  #查询所有
    context['userList'] = results  #存入集合
    return render(request, 'index.html', context) #request,地址,参数

# 无视这个方法
def test():
    print("test -- ")


# 添加
def add(request):
    request.encoding = 'utf-8'
     = str(request) #这边获取的是url
    values = .split('?')[-1].rstrip("'>") #对url进行处理
    param_list = values.split('&') # 获取请求参数集合list
    print(param_list[1]) # 不获取第0个,第0个为token,从第一个获取
    print(param_list[2]) 
    print(param_list[3])

    id = param_list[1].split('=')[1] #这边进行分割,因为原始字符串为 “id=1”
    name = param_list[2].split('=')[1]
    age = param_list[3].split('=')[1]

    print(id,name,age)
    insert_sql = f"""INSERT INTO USER_PY(`ID`,`USER_NAME`,`USER_AGE`)values({id},"{name}",{age})"""
    print(insert_sql)
    cur.execute(insert_sql)
    connection.commit() # 这边注意一定要提交
    print("插入成功")
    return HttpResponse(request)


# 删除
def delete(request):
    request.encoding = 'utf-8'
     = str(request)
    values = .split('?')[-1].rstrip("'>")
    param_list = values.split('&')
    id = param_list[0].split('=')[1]

    delete_sql = "DELETE FROM USER_PY WHERE ID = " + id
    cur.execute(delete_sql)
    print("删除成功")
    connection.commit()
    return HttpResponse(request)

# def hello(request):
#     return HttpResponse("Hello world ! ")

5.配置路由

django 使用 mysql 存储 django操作mysql_html

附上一个表结构

CREATE TABLE `user_py` (
  `ID` int(11) NOT NULL,
  `USER_NAME` char(20) NOT NULL,
  `USER_AGE` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

作者的话

这边做的比较简陋,点击删除,跳的是空页,添加也是,添加完成后要刷新主页面才会出现新的数据,数据库里面是已经添加成功的。

安装mysql

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