【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
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号