Mostrar dinámicamente el contenido de la base de datos MySQL en la página web bajo el marco Python Django

            Mostrar dinámicamente el contenido de la base de datos MySQL en la página web bajo el marco Python Django

Requisito: mostrar los datos de una sola tabla en una base de datos en la base de datos en la página de inicio de la página web. La tabla tiene tres columnas: columna de identificación, columna de nombre y columna de número de estudiante, y tiene una lógica simple: el nombre y el número de estudiante en una sola fila se puede modificar. Cualquier fila se puede eliminar y saltará automáticamente a la página de visualización después de la modificación y eliminación. No hay paginación, gestión de permisos y otras funciones, solo una simple pantalla,

Después de eliminar:

 Modificando:

 

================================================ ==========================

Empecemos por explicar:

Primero, cree un nuevo proyecto, el nombre del proyecto es sims. Ejecute el comando: Python manage.py startproject sims

Registre la aplicación en el archivo settings.py en el directorio del proyecto. El nombre de la aplicación es usuario.

 

 

Tenga en cuenta que es mejor crear la biblioteca primero. La carpeta de la plantilla está en el siguiente nivel del proyecto. Haga clic con el botón derecho en la carpeta llamada sims y cree una nueva carpeta llamada plantilla. Haga clic con el botón derecho en la carpeta de la plantilla y cree una carpeta llamada estudiante. Una vez completados los preparativos anteriores, ejecute el comando: python manage.py startapp user (escriba qué nombre está registrado). En este punto, el entorno del proyecto básico está listo.

================================================ ==========================

Ejecute el comando: Python manage.py startapp user

Una vez completada la ejecución, habrá un directorio de nivel adicional debajo del proyecto y este directorio es el nombre de la aplicación registrada anteriormente, y hay cinco archivos debajo.

A continuación, comience a editar el  archivo models.py

Este nombre de clase es el nombre de la tabla recién creada. El nombre de la tabla generada en los datos finales es nombre de la aplicación_nombre de la clase, así que preste atención a este nombre de clase e intente tener algún significado tanto como sea posible.

Ejecute dos comandos: Python manage.py makemigrations

Python manage.py migrar

Después de la ejecución, las tablas utilizadas en la base de datos se inicializarán y generarán. Por supuesto, la tabla está temporalmente vacía, no hay datos en ella,

 Esta es la inicialización exitosa.

================================================ =========================

Configurar el enrutamiento:

usuario / archivo urls.py:

from django.conf.urls import url
from . import views
urlpatterns = [ url(r'^$', views.index),
                url(r'^add/$', views.add),
                url(r'^edit/$', views.edit),
                url(r'^delete/$', views.delete),
                ]

 

sims / urls.py:

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^', include('user.urls')),
]

================================================ ==========================

Vista de configuración (todas las funciones lógicas están dentro):

usuario / views.py

#这个文件是视图功能的实现,
# Create your views here.
from django.http import HttpResponse
import MySQLdb
from django.shortcuts import render, redirect # Create your views here.
#学生信息列表处理函数,直接读取数据库的内容,将内容渲染到静态展示页面,算是查这个功能的实现。
def index(request):
    conn = MySQLdb.connect(host="数据库的ip",
    user="root",
    passwd="数据库的密码",
    db="要连接的数据库库名,settings.py里所设置的那个库名",
    charset='utf8')
    with conn.cursor(cursorclass=MySQLdb.cursors.DictCursor) as cursor:
        cursor.execute("SELECT id,student_no,student_name FROM user_student")
        students = cursor.fetchall()
        return render(request, 'student/index.html', {'students': students}) 
# 学生信息新增处理函数,这是增功能函数,注意返回的路由,增加动作完毕后自动跳转到查页面
def add(request):
    if request.method == 'GET':
        return render(request, 'student/add.html')
    else:
        student_no = request.POST.get('student_no', '')
        student_name = request.POST.get('student_name', '')
        conn = MySQLdb.connect(host="数据库ip", user="root", passwd="数据库密码", db="库名", charset='utf8')
        with conn.cursor(cursorclass=MySQLdb.cursors.DictCursor) as cursor:
            cursor.execute("INSERT INTO user_student (student_no,student_name) " "values (%s,%s)", [student_no, student_name])
    conn.commit()
    return redirect('../') 
# 学生信息修改处理函数,同上,只是sql语句不一样而已,换成了update语句。
def edit(request):
    if request.method == 'GET':
        id = request.GET.get("id")
        conn = MySQLdb.connect(host="要连的数据库ip", user="root", passwd="数据库密码", db="要连接的数据库库名,settings.py里所设置的那个库名", charset='utf8')
        with conn.cursor(cursorclass=MySQLdb.cursors.DictCursor) as cursor:
            cursor.execute("SELECT id,student_no,student_name FROM user_student where id =%s", [id])
            student = cursor.fetchone()
        return render(request, 'student/edit.html', {'student': student})
    else:
        id = request.POST.get("id")
        student_no = request.POST.get('student_no', '')
        student_name = request.POST.get('student_name', '')
        conn = MySQLdb.connect(host="数据库的ip", user="root", passwd="数据库密码", db="要连接的数据库库名,settings.py里所设置的那个库名", charset='utf8')
        with conn.cursor(cursorclass=MySQLdb.cursors.DictCursor) as cursor:
            cursor.execute("UPDATE user_student set student_no=%s,student_name=%s where id =%s", [student_no, student_name, id])
    conn.commit()
    return redirect('../') 
# 学生信息删除处理函数,同上,SQL语句改变而已。
def delete(request):
    id = request.GET.get("id")
    conn = MySQLdb.connect(host="数据库ip", user="root", passwd="数据库密码", db="要连接的数据库库名,settings.py里所设置的那个库名", charset='utf8')
    with conn.cursor(cursorclass=MySQLdb.cursors.DictCursor) as cursor:
        cursor.execute("DELETE FROM user_student WHERE id =%s", [id])
    conn.commit()
    return redirect('../')
#返回上层url

================================================ ============================

Tres archivos HTML:

template / student / .index.html :


<!DOCTYPE html>
<html lang="en">
<head> <meta charset="UTF-8">
    <title>学生列表</title>
</head>
<body> <table border="1px" width="100%" style="border-collapse: collapse;">
    <a href="../add">添加学生</a> <tr>
    <th>编号</th>
    <th>姓名</th>
    <th>学号</th>
    <th>操作</th>
</tr> {% for student in students %}
    <tr>
        <td align="center">{
   
   { forloop.counter }}
        </td> <td align="center">{
   
   { student.student_name }}
    </td>
        <td align="center">{
   
   { student.student_no }} </td>
        <td align="center">
            <a href="../edit/?id={
   
   { student.id }}"> 编辑 </a>
            <a href="../delete/?id={
   
   { student.id }}"> 删除 </a>
        </td> </tr> {% endfor %}
</table>
</body>
</html>

 

template / student / add.html:

<!DOCTYPE html>
<html lang="en">
<head> <meta charset="UTF-8">
    <title>学生添加</title>
    <style>
     form { margin: 20px auto; width: 500px; border: 1px solid #ccc; padding: 20px }
</style>
</head>
<body> <form method="post" action="../add/"> {% csrf_token %}
    <table> <tr> <th>姓名</th> <td><input name="student_name"></td>
    </tr>
        <tr> <th>学号</th>
            <td><input name="student_no"/></td>
        </tr> <tr>
            <td colspan="2">
            <input type="submit"/> </td>
        </tr>
    </table>
</form>
</body>
</html>

template / student / edit.html:

<!DOCTYPE html>
<html lang="en">
<head> <meta charset="UTF-8">
    <title>学生编辑</title>
    <style> form { margin: 20px auto; width: 500px; border: 1px solid #ccc; padding: 20px }
</style>
</head> <body>
<form method="post" action="../edit/"> {% csrf_token %}
    <input type="hidden" name="id" value="{
   
   { student.id }}"/>
    <table> <tr> <th>姓名</th> <td><input name="student_name" value="{
   
   { student.student_name }}"></td>
    </tr> <tr> <th>学号</th> <td><input name="student_no" value="{
   
   { student.student_no }}"/></td> </tr> <tr>
        <td colspan="2"> <input type="submit"/> </td>
    </tr>
    </table>
</form>
</body>
</html>

Porque después de eliminar los datos, salta directamente a la página de visualización, por lo que no es necesario escribirlos por separado. Solo necesita actualizar la página de índice después de que los datos de front-end y back-end estén sincronizados, y puede verlo en la página de visualización, que es index.html. Agregar y modificar funciones es otra lógica, por lo que debe escribirse por separado.

 

Entonces, ahora puede ejecutar el comando: Python manage.py runserver,

El programa iniciará el servidor de desarrollo para que pueda usar el navegador para probar el funcionamiento de su APLICACIÓN.

 

Supongo que te gusta

Origin blog.csdn.net/alwaysbefine/article/details/106086542
Recomendado
Clasificación