VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > Python基础教程 >
  • 【django入门】 07 ORM设计用户登录实例

概述

  • 实现 增删查
  • views.py内,增删查,各def一个函数
  • templates内,增和查,各设计一个html页面;删不需要

urls.py内

  • 设计3个url,指向3个函数

 
from django.urls import path
 
import app01.views
 
urlpatterns = [
 
path('admin/', admin.site.urls),
 
path('info_list/', app01.views.info_list),
 
path('info_add/', app01.views.info_add),
 
path('info_delete/', app01.views.info_delete),
 
]

views.py内

  • 定义3个函数

 
from django.shortcuts import render, redirect, HttpResponse
 
from app01.models import UserInfo
 
 
 
def info_list(request):
 
data_list = UserInfo.objects.all()
 
return render(request, "info_list.html", {"data_list": data_list})
 
 
 
 
 
def info_add(request):
 
# 在add页面收到“GET”方法的请求(第一次打开add时),返回一个html页面,info_add.html
 
if request.method == "GET":
 
return render(request, "info_add.html")
 
 
 
# 在add页面以POST(submit action规定)提交后,通过“get”取到“POST”元素
 
user = request.POST.get("user")
 
pwd = request.POST.get("pwd")
 
age = request.POST.get("age")
 
 
 
# 在数据库新增数据行;并跳转至查询页面
 
UserInfo.objects.create(name=user, password=pwd, age=age)
 
return redirect("/info_list/")
 
 
 
def info_delete(request):
 
if request.method == "GET":
 
nid = request.GET.get("nid")
 
UserInfo.objects.filter(id=nid).delete()
 
return redirect("/info_list/")

templates内,新增2个html

  • list_add.html 取名的时候注意,取为“list_add”,而不取“add_list”——事物、主体应该放在前面;而动作、状态应该放在后面;row_obj
    • 注意csrf_token,用的是逻辑语法{%%},而不是变量语法{{}}
    • 注意text前端展示值用的是placehoder,submit前端展示值用的是value

 
{# method是post#}
 
{# action为空,即提交给本页面自身 #}
 
{# 但post方式的请求被本页面接收后,在views.py中规定,实际跳至list_info #}
 
{# 所以即使删掉 action="" ,结果也一样 #}
 
<form method="post" action="">
 
{% csrf_token %}
 
<input type="text" name="user" placeholder="用户名">
 
<input type="text" name="pwd" placeholder="密码">
 
<input type="text" name="age" placeholder="年龄">
 
<input type="submit" value="提交">
 
</form>
- info_list.html 注意html的table层次、写法 ``` {# 在info_list添加链接,跳转到info_add #} 添加

 
<tr>
 
<th>id</th>
 
<th>姓名</th>
 
<th>密码</th>
 
<th>年龄</th>
 
<th>操作</th>
 
</tr>
 
</thead>
 
<tbody>
 
{% for obj in data_list %}
 
<tr>
 
<td>{{ obj.id }}</td>
 
<td>{{ obj.name }}</td>
 
<td>{{ obj.password }}</td>
 
<td>{{ obj.age }}</td>

{# 在每一行末尾,添加“删除”连接,跳转到带?nid=的delete链接,由views.py的delete函数接收 #}

{% endfor %}

 

{# 注意,引号内,nid=后面直接可以接{{ obj.id }} #} 删除
``` 

来源:BV1NL41157 武沛齐《2022 B站最详细django3教程(django从入门到实践)》P18


相关教程