• 带分页功能的博客部分代码


    程序目录

    models.py

    from django.db import models

    # Create your models here.
    class Category(models.Model):
        caption_c=models.CharField(max_length=16)


    # class ArticleType(models.Model):
    #     caption_a=models.CharField(max_length=16)


    class Article(models.Model):
        title=models.CharField(max_length=32)
        content=models.CharField(max_length=255)

        category=models.ForeignKey(Category,on_delete=models.CASCADE)
        # article_type=models.ForeignKey(ArticleType,on_delete=models.CASCADE)

        type_choice=(
            (1,'Python'),
            (2,'OpenStack'),
            (3,"Linux"),
        )
        article_type_id=models.IntegerField(choices=type_choice)

    views.py

    from django.contrib import admin
    from django.urls import path
    from app01 import views
    from django.conf.urls import url
    urlpatterns = [
        path('admin/', admin.site.urls),
        url(r'^article-(?P<article_type_id>d+)-(?P<category_id>d+).html',views.article,name='article'),
    ]

    views.py

    from django.shortcuts import render
    from app01 import models
    # Create your views here.
    def article(request,*args,**kwargs):
        # print(request.path_info) #获取当前url
        # from django.urls import reverse
        # url=reverse('article',kwargs=kwargs)
        # print(url)
        # print(kwargs)  #{'article_type_id': '1', 'category_id': '2'}

        condition={}
        for k,v in kwargs.items():
            kwargs[k]=int(v)
            if v=='0':
                pass
            else:
                condition[k]=v

        # article_type_list=models.ArticleType.objects.all()
        article_type_list=models.Article.type_choice
        category_list=models.Category.objects.all()
        # c={'article_type_id': '1', 'category_id': '2'}
        result= models.Article.objects.filter(**condition)
        return render(request,'article.html',{'result':result,
                                              'article_type_list':article_type_list,
                                              'category_list':category_list,
                                              'arg_dict':kwargs})

    自定义函数

    templatetags--->filter.py

    from django import template
    from django.utils.safestring import mark_safe

    register = template.Library()

    @register.simple_tag
    def filter_all(arg_dict,k):
        '''
            {% if arg_dict.article_type_id == 0 %}
                <a class="active" href="/article-0-{{ arg_dict.category_id }}.html">全部</a>
            {% else %}
                <a  href="/article-0-{{ arg_dict.category_id }}.html">全部</a>
            {% endif %}
        '''
        if k == 'article_type_id':
            n1=arg_dict['article_type_id']
            n2=arg_dict['category_id']
            if n1 == 0:
                ret = '<a class="active" href="/article-0-%s.html">全部</a>' % n2
            else:
                ret = '<a href="/article-0-%s.html">全部</a>' % n2
        else:
            n1 = arg_dict['category_id']
            n2 = arg_dict['article_type_id']
            if n1 == 0:
                ret = '<a class="active" href="/article-%s-0.html">全部</a>' % n2
            else:
                ret = '<a href="/article-%s-0.html">全部</a>' % n2
        return mark_safe(ret)

    @register.simple_tag
    def filter_article_type(article_type_list,arg_dict):
        '''
          {% for row in article_type_list %}
                {% if row.id == arg_dict.article_type_id %}
                    <a  class="active" href="/article-{{ row.id }}-{{ arg_dict.category_id }}.html">{{ row.caption_a }}</a>
                {% else %}
                    <a  href="/article-{{ row.id }}-{{ arg_dict.category_id }}.html">{{ row.caption_a }}</a>
                {% endif %}
            {% endfor %}
        '''
        ret=[]
        for row in article_type_list:
            if row[0] == arg_dict['article_type_id']:
                temp='<a class="active" href="/article-%s-%s.html">%s</a>'%(row[0],arg_dict['category_id'],row[1])
            else:
                temp = '<a href="/article-%s-%s.html">%s</a>'%(row[0], arg_dict['category_id'], row[1])
            ret.append(temp)
        return  mark_safe(''.join(ret))

    @register.simple_tag
    def filter_category_type(category_list,arg_dict):
        '''
        {% for row in category_list %}
                {% if row.id == arg_dict.category_id %}
                    <a class="active" href="/article-{{ arg_dict.article_type_id }}-{{ row.id }}.html">{{ row.caption_c }}</a>
                {% else %}
                    <a href="/article-{{ arg_dict.article_type_id }}-{{ row.id }}.html">{{ row.caption_c }}</a>
                {% endif %}
            {% endfor %}
        :return:
        '''
        let = []
        for row in category_list:
            if row.id == arg_dict['category_id']:
               lemp = '<a class="active" href="/article-%s-%s.html">%s</a>'%(arg_dict['article_type_id'],row.id,row.caption_c)
            else:
                lemp = '<a href="/article-%s-%s.html">%s</a>'%(arg_dict['article_type_id'],row.id,row.caption_c)
            let.append(lemp)
        return mark_safe(''.join(let))

     

    带自定义函数的模板

    article.html

    {% load filter %}

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            .condition a {
                display: inline-block;
                padding:3px 5px;
                border: 1px solid #dddddd;
                margin:5px 5px;

            }
            .condition a.active{
                background-color: brown;
            }

        </style>
    </head>
    <body>
        <h1>过滤条件</h1>
        <div class="condition">
            <div>
            {% filter_all  arg_dict  'article_type_id' %}
            {% filter_article_type article_type_list arg_dict %}
            </div>

            <div>
            {% filter_all  arg_dict  'category_id' %}
            {% filter_category_type category_list arg_dict %}
            </div>
        </div>

        <h1>查询结果</h1>
        <ul>
        {% for row in result %}
            <li>{{ row.id }}-{{ row.title }}</li>
        {% endfor %}
        </ul>
    </body>
    </html>

    不带自定义函数的模板

    article_bak.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            .condition a {
                display: inline-block;
                padding:3px 5px;
                border: 1px solid #dddddd;
                margin:5px 5px;

            }
            .condition a.active{
                background-color: brown;
            }

        </style>
    </head>
    <body>
        <h1>过滤条件</h1>
        <div class="condition">
            <div>
            {% if arg_dict.article_type_id == 0 %}
                <a class="active" href="/article-0-{{ arg_dict.category_id }}.html">全部</a>
            {% else %}
                <a  href="/article-0-{{ arg_dict.category_id }}.html">全部</a>
            {% endif %}
            {% for row in article_type_list %}
                {% if row.id == arg_dict.article_type_id %}
                    <a  class="active" href="/article-{{ row.id }}-{{ arg_dict.category_id }}.html">{{ row.caption_a }}</a>
                {% else %}
                    <a  href="/article-{{ row.id }}-{{ arg_dict.category_id }}.html">{{ row.caption_a }}</a>
                {% endif %}
            {% endfor %}
            </div>

            <div>
            {% if arg_dict.category_id == 0 %}
                <a class="active" href="/article-{{ arg_dict.article_type_id }}-0.html">全部</a>
            {% else %}
                <a href="/article-{{ arg_dict.article_type_id }}-0.html">全部</a>
            {% endif %}
            {% for row in category_list %}
                {% if row.id == arg_dict.category_id %}
                    <a class="active" href="/article-{{ arg_dict.article_type_id }}-{{ row.id }}.html">{{ row.caption_c }}</a>
                {% else %}
                    <a href="/article-{{ arg_dict.article_type_id }}-{{ row.id }}.html">{{ row.caption_c }}</a>
                {% endif %}
            {% endfor %}
            </div>
        </div>

        <h1>查询结果</h1>
        <ul>
        {% for row in result %}
            <li>{{ row.id }}-{{ row.title }}</li>
        {% endfor %}
        </ul>
    </body>
    </html>

  • 相关阅读:
    leetcode Convert Sorted List to Binary Search Tree
    leetcode Convert Sorted Array to Binary Search Tree
    leetcode Binary Tree Level Order Traversal II
    leetcode Construct Binary Tree from Preorder and Inorder Traversal
    leetcode[105] Construct Binary Tree from Inorder and Postorder Traversal
    证明中序遍历O(n)
    leetcode Maximum Depth of Binary Tree
    限制 button 在 3 秒内不可重复点击
    HTML 和 CSS 画三角形和画多边行基本原理及实践
    在线前端 JS 或 HTML 或 CSS 编写 Demo 处 JSbin 与 jsFiddle 比较
  • 原文地址:https://www.cnblogs.com/leiwenbin627/p/11161211.html
Copyright © 2020-2023  润新知