zoukankan      html  css  js  c++  java
  • BBS 03day

    BBS_03 day:

    自定义标签 过滤器:

    -->	 当页面上某一块区域的内容需要在多个页面使用
    并且该区域的内容需要通过传参才能够正常显示
    那么你可以考虑使用inclusion_tag
    
    步骤:
    	1.在应用下必须新建一个名叫templatetags的文件夹
        2.在该文件夹内新建任意名称的py文件
        3.在该py文件内必须先写两句代码:
            from django.template import Library
            register = Library()
    

    文章的点赞,点彩功能:

    点赞点踩业务逻辑:
        1.判断当前用户是否登录
        2.当前这篇文章是否是当前用户自己写的
        3.当前这篇文章用户是否已经点过
        4.操作数据库 完成数据修改:
            1.点赞点踩添加数据的时候
            2.文章表里面对应的普通字段也得修改
    

    文章的评论功能

    子评论:
        点击回复按钮到底发生了几件事???
        1.自动获取点击评论的评论人的姓名
        2.拼接  @+人名+
    
        3.将拼接好的内容添加到评论框中  并且评论框自动聚焦
    			
    完善点:
        存储子评论的时候  @人名
     不应该存储进去
        在渲染的时候 应该渲染出人名
    
    
    django-debug-toolbar (django插件: 方便数据的查询,展示)	
    
    import json
    json.encoder()
    
    -->查看json   python  之间的转换关系
    
    

    transaction用法:

    django transaction用法:
    from django.db import transaction
    from django.http import HttpResponse
    from django.utils.decorators import method_decorator
    
    
    # 类中添加装饰器,保证在该类中所有的数据库操作都在一个事物中
    @method_decorator(transaction.atomic, name='dispatch')
    class MyView1(object):
        
        def get(self, request):
            return HttpResponse('GET')
        
        def post(self, request):
            return HttpResponse('POST')
    
    
    class MyView2(object):
        
        # 保证在该函数中所有的数据库操作都在一个事物中
        @transaction.atomic
        def post(self, request):
    
            # 设置事物保存点(可设多个)
            t1 = transaction.savepoint()
    
            # 如果有异常情况可回滚到指定的保存点
            transaction.savepoint_rollback(t1)
    
            # 如果没有异常可提交事物
            transaction.savepoint_commit(t1)
            return HttpResponse('POST')
    

    自定义 标签代码展示:

    from django.template import Library
    from app01 import models
    from django.db.models import Count
    from django.db.models.functions import TruncMonth
    
    
    register = Library()
    
    @register.inclusion_tag('left_menu.html')
    def my_menu(username):
        user_obj = models.Userinfo.objects.filter(username=username).first()
        blog = user_obj.blog
        # 提供侧边栏所需要的所有的数据
        # 1.查询当前用户每一个分类及分类下的文章数
        category_list = models.Category.objects.filter(blog=blog).annotate(num=Count('article')).values_list('name','num','pk')
        # 2.查询当前用户每一个标签级标签下的文章数
        tag_list = models.Tag.objects.filter(blog=blog).annotate(num=Count('article')).values_list('name','num','pk')
        # 3.按照年月分组
        date_list = models.Article.objects.filter(blog=blog).annotate(month=TruncMonth('create_time')).values('month').annotate(num=Count('pk')).values_list('month','num')
        return locals()
    
  • 相关阅读:
    Oslec Echo Canceller:开源回声消除方案
    引用:SpeechLinks
    打印论文分类
    语音算法方案公司
    推送 push
    Android完美多语言应用,不重启应用,不改变系统语言
    定时任务quartz
    在android平台解决找不到sun.misc.BASE64Enocder的问题
    IOS背景view隐藏键盘
    为ExpandableListView自定义Item
  • 原文地址:https://www.cnblogs.com/shaozheng/p/12026124.html
Copyright © 2011-2022 走看看