Django(一)

本文介绍了如何使用Django创建项目,详细解析了项目文件的作用,包括settings配置、urls路由和模板中的特殊标记。讲解了GET和POST请求的区别以及如何在视图中处理请求数据,并展示了如何将数据渲染到HTML页面。最后提到了Django对数据库的基本操作,如增删改查,并简单提及了学员管理系统的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、创建项目

1、在cmd中相应位置:输入django-admin startproject 项目名字
就开启了一个django项目。
2、项目文件作用
①、settings配置文件
②、urls路由系统,页面调用和函数
③、init初始化
④、wsgi
3、

from django.contrib import admin
from django.urls import path
from django.shortcuts import HttpResponse,render,redirect
def login(request):
    # return HttpResponse('<input type="text"  />')#只能加字符串
    #自动找到模板路径下的login.html文件,读取内容返回给用户。
    # print(request.method)#返回请求类型
    if request.method == "GET":
        return render(request,'login.html')#获取网页信息,变量都为request
    else:
        u=request.POST.get('user')
        p=request.POST.get('pwd')
        if u =="root" and p =="123":
            return redirect('http://www.baidu.com')#跳转网页
        else:
            return render(request, 'login.html')  # 获取网页信息,变量都为request

urlpatterns = [
    # path('admin/', admin.site.urls),
    path('login/', login),  # 后缀的名字,调用的函数,后返回的页面。
]

。。。。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>用户登录页面</title>
    <link rel="stylesheet" href="/static/commons.css">
</head>
<body>
<h1>用户登录</h1>
<form method="post" action="/login/">
用户名:<input type="text" name="user"/>
密码<input type="password" name="pwd"/>
<input type="submit" value="登录">
</form>

</body>
</html>

name=""中对应的输入值会以字典的形式传到页面,但没有接收。
4、GET和POST
request.POST获取POST提交的数据(表单提交数据)
request.GET获取GET提交的数据(在url传递的数据)
返回数据:
①、return HttpReasponse()返回字符串
②、return render()渲染之后,返回页面
③、return redirect()跳转到某个网站

{{msg}}在html中
return render( ,{“msg”:“返回的东西”})
注:以POST方式传值时,在GET中也会获得相应的值。
以GET传值时,只有GET中有值。
POST在请求体中拿的值
GET在请求头的url中拿的值
5、模板中的特殊标记
login.html
{{name}}
return render(,{“name”:“值”})
6、获取数据到html中

return render(request,'index.html',{
        'name':"root",
        'users':["董云鹏","汤普森"],
        'password':{"3131":"44252"},
        'user_list_dicr':[
            {"id":1,"name":"alex"},
            {"id":2,"name":"tom"},
            {"id":3,"name":"kevin"},]

html中获取的方法

<body>
<h1>{{ name }}</h1>
<p>{{ users.0 }}</p>
<p>{{ users.1 }}</p>
<p>{{ password.3131 }}</p>
<h3>循环</h3>
<table>
{% for i in users %}
    <tr>
       <td> {{ i }}</td>
    </tr>
{% endfor %}
</table>
<table border="1">
    {% for item in user_list_dicr  %}
        <tr>
        <td>{{ item.id }}</td>
        <td>{{ item.name }}</td>
        </tr>

{% endfor %}


</table>

</body>

对数据库的操作:




表(一对一、一对多、多对多)

学员管理系统

id name 班级

def classes(request):
    #连接数据库
    conn = pymysql.connect(host = 'localhost',port=3306,user='root',passwd='123',db='test', charset='utf8')
    #创建游标
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    #游标中的SQL语句
    cursor.execute("select id,title from class")
    #获取信息,并拿到
    class_list = cursor.fetchall()
    #关闭游标
    cursor.close()
    #关闭数据库
    conn.close()
    #渲染到前端页面
    return render(request,'classes.html',{"class_lst":class_list})

前端页面获取信息的代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>班级列表</title>
</head>
<body>
<h1>班级列表</h1>
<a href="/add_class">添加</a>
<table>
    <thead>

    <tr>
        <th>ID</th>
        <th>班级列表</th>
    </tr>
    </thead>
    <tbody>
    {% for row in class_lst %}
        <tr>
        <td>{{ row.id }}</td>
        <td>{{ row.title }}</td>
        </tr>

    {% endfor %}


    </tbody>
</table>

</body>
</html>

数据库插入的操作;

def add_class(request):
    if request.method =="GET":#如果发送get请求,返回到添加班级的界面
        return render(request,'add_class.html')
    else:
        t=request.POST.get('title')#如果是post请求,把数据获取,插入到数据库。并返回到班级页面。
        conn=pymysql.connect(host="localhost",port=3306,user="root",password="123",db="test",charset="utf8")
        cursor=conn.cursor(cursor=pymysql.cursors.DictCursor)
        cursor.execute("insert into class(title)values(%s)",[t,])
        conn.commit()
        cursor.close()
        conn.close()
        return redirect('/classes/')

页面接受的代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>添加班级</title>
</head>
<body>
<h1>添加班级</h1>
<form method="post" action="/add_class/">
    <p>
        班级名称:<input type="text" name="title">
        <input type="submit" value="提交">
    </p>
</form>

</body>
</html>

数据库删除操作:

def del_class(request):
    nid =request.GET.get('nid')
    conn = pymysql.connect(host="localhost", port=3306, user="root", password="123", db="test", charset="utf8")
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    cursor.execute("delete from class where id=%s",[nid,])
    conn.commit()
    cursor.close()
    conn.close()
    return redirect('/classes/')

编辑操作:

def edit_class(request):
    if request.method == "GET":
        nid = request.GET.get('nid')
        conn = pymysql.connect(host="localhost", port=3306, user="root", password="123", db="test", charset="utf8")
        cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
        cursor.execute("select id ,title from class where id=%s",[nid,])
        result = cursor.fetchone()
        cursor.close()
        conn.close()
        return render(request,'edit_class.html',{'result':result})
    else:
        nid=request.GET.get('nid')
        title = request.POST.get('title')
        conn = pymysql.connect(host="localhost", port=3306, user="root", password="123", db="test", charset="utf8")
        cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
        cursor.execute("update class set title = %s where id= %s",[title,nid])
        conn.commit()
        cursor.close()
        conn.close()
        print(nid,title)
        return redirect('/classes/')

编辑页面:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>编辑班级信息</title>
</head>
<body>
<h1>编辑班级信息</h1>
<form method="POST" action="/edit_class/?nid={{ result.id }}">

    <p>班级名称:<input type="text" name="title" value="{{ result.title }}"/></p>
            <input type="submit" value="提交"/>

</form>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值