djang小项目过程中的小问题 03(不定期更新)

我来到这个世界上就是解决问题的

​ 今天写了一个图书管理系统,我先把一些问题或者知识点整理下来

  1. 前后端的一些交互注意点(无名分组,视图函数传参等等)

    ​ 首先你要明白一点,就是访问网页的过程就是输入url地址,然后拿到前端网页后,输入信息,提交到后台(也是通过url地址),通过视图函数的对应关系,找到相关的视图函数,处理完业务逻辑,在返回一个页面(就是django必会的三剑客)

    ​ 基于上面的前提,我今天总结了几个注意点。

    • 首先html文件中接收的数据格式是什么样的,由url决定,比如我在设置编辑图书时,要根据图书的id来判断跳到哪个图书的页面下,于是这里面自然就想到了 url中设置无名分组,第一个参数设置正则数字格式,然后给个名字,用于反向解析
    • 接着上面讲的,这个系统里面有一个功能就是:在图书列表界面,有对单个图书进行的编辑操作,这个功能的实现原理就是:给编辑 按钮设置一个a标签(超链接), 标签里面用模板语法,通过名字 + 当前图书的id值 反向解析出 url地址 传给后端 这样就得到一个独一无二的url地址 进入到图书的编辑页面
    • 同样,图书列表中的添加图书也是这个实现原理(url设置无名分组,前端界面反向解析)
    • 在编辑图书的时候
      • 注意一本书可能有多个作者,这个时候在视图函数中取值就得按照getlist取值,拿到列表
      • **由于书籍和作者是多对多,编辑图书之后需要对图书作者关系表进行操作,这个时候由于作者是个列表,于是就需要add(*author_list),打散列表,分成多个值,而set的时候,传的是可迭代对象,不需要打散就可以**
    • 增删改完,要重定向到book_list, 通过反向解析就可以了
    • 一些前端小知识
      • url中设置 r’^$‘表示初始页,不加任何后缀,然后前端界面 a标签中的href设置成‘/’就表示跳转到首页
      • 前端日期显示需要用到过滤器例如<td>{{ book_obj.publish_date|date:'Y-m-d' }}</td>这样显示的格式更亲民
      • 前端常用forloop.counter表示序号,可以连续
      • 出版社和作者这种可能有多个值的,要通过for循环从对象列表中取出

猜你喜欢

转载自www.cnblogs.com/michealjy/p/11741353.html