【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#}
<a href="https://www.cnblogs.com/info_add/">添加</a>
<table border="1">
    <thead>
	
    <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函数接收 #}
			<td>
				{# 注意,引号内,nid=后面直接可以接{{ obj.id }} #}
                <a href="https://www.cnblogs.com/info_delete/?nid={{ obj.id }}"  >删除</a>
            </td>
        </tr>
    {% endfor %}
    </tbody>
</table>

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

推荐这些文章:

jsp页面获取当前登录用户信息

<tr>
<th>所在处室</th>
<td >
<input type = "text" name = "unitName" placeholder = "所在处室" autocomplete = "off"
value = "${cp:MAPVALUE('unitCode',sessionScope.SPRING_SECURITY_CONTEXT.authentication.principal.currentUnitCode)}"
class = "layui-input" re...

HTML 5 从入门到入土

前端的好处是所见即所得,和数据库一样,不会很枯燥。
有些字符,颜色,标签可以现用现查。

HTML (超文本标记语言) (HyperText Markup Language)
一种创建网页的标准标记语言,使用HTML建立自己的WEB站点,在浏览器上运行的语言。
HTML是一种标记语言,不是编程语言,有两部分组成:标签,标签内的文本
HTML文档 = Web页面

事实上,每一个HTML文档都是一种静态的网页文件,这个文件里面包含了HTML指令代码,这些指令代码并不是一种程序语言,只是一种排版网页中资料显示位置的标记结构语言,易学易懂,非常简单。 ------- 百度百科
HTML 很容易...

获取点击元素的文本信息 复制到剪切板 监听鼠标悬浮

 
监听鼠标悬浮

<!DOCTYPE html>
<html>

<head>
<meta charset="utf-8" />
<title></title>
</head>

<!-- <link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/4.6.1/css/bootstrap.min.css" rel="stylesheet"> -->
<script src="http://li...

使用jquery实现表单的全选与全不选功能只能监听一次

问题
如图,功能可以实现,但是点击一次实现了全选后,取消全选,就不可以再次全选了。请问是出了什么问题

<!DOCTYPE html>
<html>
<head>
<title>斑马状表格实现</title>
<meta charset="utf-8">
<script type="text/javascript" src="./js/lib/jquery.js"></script>
</head>
<body>
<...

HTML---table表格表头<th>

<h4>表头:</h4>
<table border="1">
<tr>
<th>姓名</th>
<th>身份证</th>
<th>电话</th>
</tr>
<tr>
<td>王五</td>
<td>00000000000000</t...

把excel文件存为csv文件,并将优秀变成90分,良好80分,及格60分,没有交0分

 
 
把excel文件存为csv文件
CSV文件格式的通用标准并不存在,但是在RFC 4180中有基础性的描述。使用的字符编码同样没有被指定,但是bitASCII是最基本的通用编码。
 代码如下:

import pandas as pd
def cscx_to_csv_pd():
data_csc = pd.read_excel('Python成绩登记信计.xlsx', index_col=0)
data_csc.to_csv('Python成绩登记信计.csv', encoding='gbk')
if __name__ == '__mai...

95-100 css表格宽高度设置案例

  
   

<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CSS 表格 </title...

HTML---table表格rowspan

<h4>合并行rowspan:</h4>
<table border="1">
<!--第1行-->
<tr>
<td>姓名:</td>
<td>小明</td>
</tr>
<!--第2行-->
<tr>
<td r...

HTML标签元素常用列表

HTML 基本文档

<!DOCTYPE html>
<html>
<head>
<title>文档标题</title>
</head>
<body>
可见文本...
</body>
</html>

基本标签(Basic Tags)

<h1>最大的标题</h1>
<h2> . . . </h2>
<h3> . . . </h3>
<h4> . . . </h4>
<h5> ....

HTML: table表格标签横/纵向合并

Table横向合并

实现位置为表格中的: "位数/数值"格. 使用 colspan 表格属性
<table>
<tr>
<td width=100 colspan="2">位数/数值</td>
<td width=300>原码</td>
<td width=300>补码</td>
</tr>
<tr>
<td>4位</td>
<td>+6<...

文章标题:【django入门】 07 ORM设计用户登录实例
文章链接:https://www.dianjilingqu.com/51240.html
本文章来源于网络,版权归原作者所有,如果本站文章侵犯了您的权益,请联系我们删除,联系邮箱:saisai#email.cn,感谢支持理解。
THE END
< <上一篇
下一篇>>