声明:本博客用的为pycharm Django2.2,基于此内容,会简单讲解

  1. 数据库传参形式的增删查改(完整小项目)
  2. 路由的 位置参数、关键字参数、以及html中反向解析路由
  3. request的表单传递
  4. html页面分割与继承

一、路由的三种传参方式、以及路由的反向解析

    1.1位置参数:       

re_path(r'gettime/(\d+)/(\d+)/(\d+)/',views.get_time),
def get_time(request,hour,minute,second):
#普通传参
# return HttpResponse("Time--> %d:%d:%d" %(hour,minute,second)) #正则表达式传参
return HttpResponse("Time--> %s:%s:%s" % (hour, minute, second))

      所谓位置参数:即函数传参时参数的书写位置不能随意改变,改变就会参数对应错误

    1.2关键字参数:

#关键字传参 年月日(在url指定顺序,函数接受无需排序----P(大写)---》参数的简写)
re_path(r'getdata/(P<year>\d+)/(P<month>\d+)/(P<day>\d+)/',views.get_data) def get_data(request,day,month,year):
return HttpResponse("无序传参 Data %s :%s :%s" %(year,month,day))

      关键字参数我们可以看出,参数位置有路由决定,书写接收参数时不影响输出结果

    1.3路由的反向解析(以后推荐写法)

#跟路由写法(incude里加上namespace属性)
path(r'App2/',include(('App2.urls','App2'),namespace='second')), #子路由写法(路由后面加上name属性)
#html中反向解析路由
path(r'learn/',views.learn,name="learn"), #页面引用解析路由写法
<h3>班级列表,点击查看</h3>
{% for grade in grade_list %}
<li><a href="{% url 'second:getstudent' g_id=grade.id %}">{{ grade.g_name }}</a></li>
{% endfor %}
<a href=""></a>

二、页面分割与继承:

  为什么要页面分割:当你写一个网页时,页面间比如说顶部导航栏多个页面都有,这时候就可以用继承来写,节约的重复写的繁琐工作

#基本页面,这样写着,表示布局
{% block header %} {% endblock %} {% block search %} {% endblock %} {% block content %} {% endblock %} {% block footer %} {% endblock %} #继承(不用写body啥的了)
{% extends "base.html" %}
{% block header %}
<h1>原先父类的---这是一个头! header</h1>
{% endblock %} 2.
% block content %}
<h1>继承显示 content</h1>
{% endblock %}
#两者均会显示
{% block header %}
{{ block.super }}
<h1>覆盖继承文件的 header</h1>
{% endblock %}

三、实例演示:数据库传参,url列表跳转

  那么问题来了,这有什么用呢,----------------其实用处大大滴(首先能做到反基本的爬取,可以做列表以及列表的详情页)---------自己上代码

#数据库传参实例
path(r'grades/',views.grades,name='getgrade'),
path(r'students/<int:g_id>/',views.students,name='getstudent'),
# path(r'gettime/<int:hour>/<int:minute>/<int:second>/',views.get_time), #显示学生详情
path(r'student_detil/<int:id>/',views.student_detil,name='studentdetil'),
#删除学生
path(r'delete_student/<int:s_id>/',views.delete_student,name='deletestudemt'),
#显示学生详情
def student_detil(request,id):
student=Student.objects.get(pk=id)
# name=student.s_name
# grade=student.s_grade_id
# stu_id=Student.objects.filter(s_grade_id=s_grade_id)
return render(request,'student_delit.html',context={"student":student,}) #删除学生
def delete_student(request,s_id):
student=Student.objects.get(pk=s_id)
student.delete() return HttpResponse("学生"+student.s_name+"删除成功!") def do_create_student(request):
print(request.method)
sName=request.POST.get('sName')
grade_id=request.POST.get('choose')
print(grade_id)
student=Student()
student.s_name=sName
student.s_grade_id=grade_id
student.save()
return HttpResponse(sName+"--->170"+grade_id+"班学生"+"添加成功")
 <h3>班级列表,点击查看</h3>
{% for grade in grade_list %}
<li><a href="{% url 'second:getstudent' g_id=grade.id %}">{{ grade.g_name }}</a></li>
{% endfor %}
<a href=""></a> <h3>170{{ g_id }}班的学生列表如下:</h3>
<ul>
{% for student in students_list %}
<li><a href="{% url 'second:studentdetil' id=student.pk %}">{{ student.s_name }}</a></li>
{% endfor %}
</ul> <hr>
<h2>添加学生信息</h2>
<form action="{% url 'second:do_create_student' %}" method="post">
姓名:<input type="text" name="sName">
所在班级:
<select name="choose">
<option value="">1701班</option>
<option value="">1702班</option>
<option value="">1703班</option>
<option value="">1704班</option>
<option value="">1705班</option>
<option value="">1706班</option>
</select>
<input type="submit" value="确定添加该学生">
</form>
<hr>
<button><a href="{% url 'second:getgrade' %}">返回班级列表</a></button> <h1>学生情况:</h1> <li>姓名{{ student.s_name }}</li>
<li>所在的班级:170{{ student.s_grade_id }}</li>
<button><a href="{% url 'second:deletestudemt' s_id=student.pk %}">删除该学生</a></button>

运行截图

四、下期更新会话的登录注册,以及会话类型的基本讲解,希望大家喜欢!!!

Django2.2 Templates 页面渲染 数据列表跳转 以及简单的页面模块继承的更多相关文章

  1. JS解析Json 数据并跳转到一个新页面,取消A 标签跳转

    JS解析Json 数据并跳转到一个新页面,代码如下 $.getJSON("http://api.cn.abb.com/common/api/staff/employee/" + o ...

  2. 解决TabActivity中子页面不通过导航跳转到还有一个页面的问题

    问题:当你的导航在TabActivity中 而子页面的一个button须要切换到当中的某一个导航页面 转载请注明出处:http://blog.csdn.net/x605940745 demo下载地址: ...

  3. Vue+elementUI 自定义动态数据菜单导航组件实现展开收缩+路由跳转router-view渲染数据 路由跳转到同一个页面带参数ID 自动刷新数据

    准备:导入ElementUI 看官网教程 数据准备:JSON数据转换成树状 参考文章: JS实现 JSON扁平数据转换树状数据 后台我拿的数据是这样的格式: [ {id:1 , parentId: 0 ...

  4. 页面设计-数据列表 DataGrid

    传统软件项目开发时,针对每个业务单据页面需要每控件一个一个的来设计,同时需要在页面功能中对每个控件的属性进行判定处理,尤其是页面风格布局样式需要花去一大半的时间,并且后续要想修改是非常麻烦繁琐,这样就 ...

  5. html(对php也有效)页面自动刷新和跳转(简单版本)

    <html>    <head><title>html页面自动刷新和跳转</title><meta http-equiv="Refres ...

  6. robotframework:appium切换webview后,在第一个页面操作成功,跳转到第二个页面后,执行命令失败

    问题: 在用robot写手机淘宝app的自动化时,打开手机淘宝后,点击天猫国际,跳转到天猫国际页面,天猫国际页面是H5, 需要切换到对应的webview,切换到webview后,点击美妆菜单,跳转到美 ...

  7. jQuery跳转到另一个页面以及原生js跳转到另一个页面

    1.原生js我们可以利用http的重定向来跳转 window.location.replace("https://www.cnblogs.com/pythonywy/"); 2.原 ...

  8. .net MVC中使用angularJs刷新页面数据列表

    使用angularjs的双向绑定功能,定时刷新页面上数据列表(不是刷新网页,通过ajax请求只刷新数据列表部分页面),实例如下: @{ Layout = null; } <!DOCTYPE ht ...

  9. vue再页面渲染json数据时没有显示

    对象点属性不能获取数据. 原因: 在创建数据对象时我使用了k,v方式:tempMap['category '] = this.category[i].label 如果在创建数据时使用的k,v方式,那么 ...

随机推荐

  1. 学习笔记02form

    1.<form>为表单标签*如果要把数据提交到服务器,则需要将<input> <textarea> <select>等表单元素放到<from> ...

  2. 学习笔记69_Logistic回归

    Logistic回归(逻辑回归)进行分类的主要思想:根据现有数据对分类边界线建立回归公式,以此进行分类. 知乎上的简述: 该算法可根据已知的一系列因变量估计离散数值(比方说二进制数值 0 或 1 ,是 ...

  3. [数据同步]Flume 抽取Mysql历史数据

    一.Flume安装目录 1.安装部署目录 [admin@test01 apache-flume-1.9.0-bin]$ pwd /opt/apache-flume-1.9.0-bin 2.将所需jar ...

  4. 智和网管平台SugarNMS助力网络安全运维等保2.0建设

    智和信通智和网管平台SugarNMS结合<信息安全技术 网络安全等级保护基本要求>(GB/T 22239-2019)等国家标准文件以及用户提出的网络安全管理需求进行产品设计,推出“监控+展 ...

  5. 6.1Hadoop属性Configuration配置API

    6.1  Hadoop属性配置API Hadoop需要添加一些自定义的属性值,可以通过Configuration类的实例来加载xml配置文件中的属性值. (1)   xml配置文件的格式 <?x ...

  6. P4873 [USACO14DEC] Cow Jog_Gold 牛慢跑(乱搞?二分?)

    (话说最近写的这类题不少啊...) 化简:给定数轴上一系列点,向正方向移动,点不能撞在一起,如果碰到一起就需要放到另外一行,求要多少行才能满足所有点不相撞的条件. (被标签误解,老是想到二分答案... ...

  7. html5不能播放视频的方法

    html5不能播放视频的方法H5不能播放视频的方法 格式工厂转换成 AVC 注意音频流 采样率和比特率 设置低一点 不然播放会卡住 还有点击播放必须要click 不要用touchstart没效果的

  8. java多线程回顾1:线程的概念与创建

    1.进程与线程的概念 现在几乎所有操作系统都支持多任务,通常一个任务就是一个程序,一个运行中的程序就是一个进程.当一个程序行时,其内部也可能在执行多个任务,进程内每一个任务的执行流,就是一个线程. 所 ...

  9. Recursive Learning

    At first, I just want to learn SQL Server / T-SQL, which I hope can replace MySQL. Then, I was attra ...

  10. mysql中int、bigint、smallint、tinyint 长度

    mysql中int.bigint.smallint.tinyint 长度 bigint -2^63 (-9223372036854775808) 到 2^63-1 (92233720368547758 ...