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的主要内容,如果未能解决你的问题,请参考以下文章

web代码片段

Xcode 4.6 的备份代码片段

4.3 合并重复的条件执行片段

以下代码片段的时间复杂度是多少?

ViewPager开关没有显示片段之间

Android 实用代码片段