django_day4
Posted neuropathy_ldsly
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django_day4相关的知识,希望对你有一定的参考价值。
Python实现数据库的增删改
#两种点击按钮向后端传送数据的方式 <a href="/edit/{{ book.id }}/"><button class="btn btn-success">编辑</button></a> <a href="/delete?id={{ book.id }}"><button class="btn btn-danger">删除</button></a>
#views文件 from django.shortcuts import render,HttpResponse,redirect from sql.models import * # Create your views here. def index(request): /*读取数据库表传送到前端*/ book_list = Book.objects.all() return render(request,"index.html",locals()) def add(request): /*处理数据库的添加数据操作*/ if request.method=="POST": #取出用户输出的form表单数据 title=request.POST.get("title") price=request.POST.get("price") count=request.POST.get("count") #向表中插入用户输入的数据 字段名=字段值 Book.objects.create(title=title,price=price,count=count) return redirect("/index") #插入完毕后重定向到index页面 return render(request,"add.html") def delete(request): /*处理数据库的删除操作*/ id = request.GET.get(‘id‘) #客户端通过?id= 方式传入id值给后端,这里取出id book = Book.objects.get(id=id) #获取对应id的数据 book.delete() #执行删除动作 return redirect(‘/index/‘) def edit(request,id): #这里使用 /edit/{{book_Obj.id}}/ 把id传入后端这里接收 /*处理数据库的修改操作*/ book_obj=Book.objects.filter(id=id).first() #用户点击编辑按钮从数据库过滤出对应id的数据 if request.method=="POST": /*用户点击form表单的提交,取出表单中的值*/ title=request.POST.get("title") price=request.POST.get("price") count=request.POST.get("count") /*过滤对应id,进行update操作*/ Book.objects.filter(id=id).update(title=title,price=price,count=count) return redirect("/index/") return render(request,"edit.html",{"book_obj":book_obj}) #把过滤出来的数据发给前端处理
#urls文件 from sql import views urlpatterns = [ url(r‘^admin/‘, admin.site.urls), url(r‘^index/$‘, views.index), url(r‘^add/$‘, views.add), url(r‘^temp/$‘, views.temp), url(r‘^delete/$‘, views.delete), url(r‘^edit/(\d+)/$‘, views.edit), ]
模板继承
可以通过一个模板来复用大量的html的代码
views中使用 render来渲染这些页面
#这是base.html基础模板
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> *{ margin: 0; padding: 0; } .header{ width: 100%; height: 48px; background-color: dodgerblue; position: fixed; top: 0; left: 0; } .left{ width: 200px; position: fixed; top: 48px; bottom: 0; left: 0; background-color: lightgrey; } .right{ position: fixed; top:48px; left: 200px; right: 0; bottom: 0; overflow: auto; } </style> </head> <body> <div class="header"></div> <div class="content"> <div class="left"> <ul class="title"> <li><a href="/blog/2017/">菜单一</a></li> <li><a href="/blog/2016/">菜单二</a></li> <li><a href="/blog/2015/">菜单三</a></li> </ul> </div> <div class="right"> {% block con %} <!--定义可被修改的block block的名字不能相同--> <h4>con</h4> <!--默认的内容,被继承后可被重写--> {% endblock %} {% block page %} <h4>PAGE</h4> {% endblock %} </div> </div> </body> </html>
#这是index主页,继承的base {% extends "base.html" %} <!--这里指定继承那个模板,发现这句话后,模板引擎会立即装载父模板--> {% block con %} <!--具体的继承标签--> {{ block.super}} <!--显示父模板中的标签内容--> <h4>conn222</h4> {% endblock %} {% block page %} <h4>2222</h4> <!--重写标签内容--> <h4>2222</h4> {% endblock %}
标签
{% with %}
用更简单的变量名替代复杂的变量名
{% with total=fhjsaldfhjsdfhlasdfhljsdal %} {{ total }} {% endwith %}
{% verbatim %}
禁止render
{% verbatim %} {{ hello }} {% endverbatim %}
加载标签库:自定义filter和simple_tag
a、在app中创建templatetags模块(必须的)
b、创建任意 .py 文件,如:my_tags.py
from django import template
from django.utils.safestring import mark_safe
register = template.Library() #register的名字是固定的,不可改变
@register.filter #把函数装饰城一个自定义filter
def filter_multi(v1,v2):
return v1 * v2
c、在使用自定义simple_tag和filter的html文件中导入之前创建的 my_tags.py :{% load my_tags %}
d、使用simple_tag和filter(如何调用)
-------------------------------.html
{% load xxx %} #首行
# num=12
{{ num|filter_multi:2 }} #24
{{ num|filter_multi:"[22,333,4444]" }}
{% simple_tag_multi 2 5 %} 参数不限,但不能放在if for语句中
{% simple_tag_multi num 5 %}
e、在settings中的INSTALLED_APPS配置当前app,不然django无法找到自定义的simple_tag.
注意:
filter可以用在if等语句后,simple_tag不可以
{% if num|filter_multi:30 > 100 %} {{ num|filter_multi:30 }} {% endif %}
以上是关于django_day4的主要内容,如果未能解决你的问题,请参考以下文章