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

程序目录

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>

原文地址:https://www.cnblogs.com/leiwenbin627/p/11161211.html

时间: 2024-10-10 19:44:12

带分页功能的博客部分代码的相关文章

博客园代码定制

博客园代码定制 版本:2019-08-08 本文基于Simple Memory模板,且已获取CSS和JS权限,此版本并非最终版本. 如有错误请指出,代码开源可以修改完善,仅用于学习交流,转载时请注明出处! 本文记录了对博客园主页优化的尝试过程以及相关的CSS源码. 在此之前默认已在“管理-选项”部分设定好了每页显示的内容,在“管理-设置”部分进行下列设置. Part 1  定制CSS代码(body部分) 首先应该解决网页端缩放和手机端图片显示不全的问题,这里采用手机端“强制使用网页端”的模式来修

从无到有开发自己的Wordpress博客主题---代码环境准备

注意这里说的是代码环境准备哦,而不是L(M)AMP运行环境哦,运行环境会在后述文章中在写. 一.在本地初始化git环境并且链接上gitee 1.在gitee上创建一个项目托管你的代码 这个不在赘述,按照提示一步一步操作就好了,个人用户用gitee的好处是,相比于GitHub速度快,而且可以创建免费的私人库. 2.创建公钥以连接gitee 虽然主流git仓库都支持http的方式,但是每次都要输入密码,麻烦. 创建方式参考:https://gitee.com/help/articles/4181 3

初步解决博客园代码高亮的一个方案

今天我要推荐的是一个免费而且支持markdown语法的软件--Typora 它有很多优点,支持多种类型代码的高亮风格,方便的排版处理,支持Latex等,最重要的一点是真正做到了所见即所得ヽ(???)?(???)? 之前在csdn 的时候有markdown编辑器,是左半边写,右半边就可以预览.但Typora厉害就在于它只有一个界面,写好之后就可以直接显示效果了(除了少数的功能无法直接预览,就我所知比如居中处理),这一点就很棒了 写前两篇博客的时候感叹博客园的markdown编辑器真是太难用了,而且

计算机视觉牛人博客和代码汇总

每个做过或者正在做研究工作的人都会关注一些自己认为有价值的.活跃的研究组和个人的主页,关注他们的主页有时候比盲目的去搜索一些论文有用多了,大牛的或者活跃的研究者主页往往提供了他们的最新研究线索,顺便还可八一下各位大牛的经历,对于我这样的小菜鸟来说最最实惠的是有时可以找到源码,很多时候光看论文是理不清思路的. 1 牛人Homepages(随意排序,不分先后): 1.USC Computer Vision Group:南加大,多目标跟踪/检测等: 2.ETHZ Computer Vision Lab

计算机视觉牛人博客和代码汇总(全)

每个做过或者正在做研究工作的人都会关注一些自己认为有价值的.活跃的研究组和个人的主页,关注他们的主页有时候比盲目的去搜索一些论文有用多了,大牛的或者活跃的研究者主页往往提供了他们的最新研究线索,顺便还可八一下各位大牛的经历,对于我这样的小菜鸟来说最最实惠的是有时可以找到源码,很多时候光看论文是理不清思路的. 1 牛人Homepages(随意排序,不分先后): 1.USC Computer Vision Group:南加大,多目标跟踪/检测等: 2.ETHZ Computer Vision Lab

博客园代码高亮插件(类似csdn的代码插入)

博客园内置支持SyntaxHighlighter代码着色,使用此内置着色特性需要将博客的默认编辑器改为TinyMCE(“管理”-“选项”中设置).如果使用CuteEditor,CuteEditor会自动去除代码中的空格,造成代码格式破坏. 如果您使用Windows Live Writer写博客(配置步骤),通过Windows Live Writer代码着色插件,可以方便进行SyntaxHighlighter代码着色. 我们推荐的代码着色插件是:Windows Live Writer Source

博客园代码高亮

使用syntaxhighlighter插件对代码进行加亮: 1>下载syntaxhighlighter,解压后将shThemeDefault.css和shCoreRDark.css文件上传到博客园 2>设置"页首html代码",添加 <link type="text/css" rel="stylesheet" href="http://博客地址/files/wbbice/shCoreRDark.css"/&g

计算机视觉牛人博客和代码汇总(全)-转载

每个做过或者正在做研究工作的人都会关注一些自己认为有价值的.活跃的研究组和个人的主页,关注他们的主页有时候比盲目的去搜索一些论文有用多了,大牛的或者活跃的研究者主页往往提供了他们的最新研究线索,顺便还可八一下各位大牛的经历,对于我这样的小菜鸟来说最最实惠的是有时可以找到源码,很多时候光看论文是理不清思路的. 1 牛人Homepages(随意排序,不分先后): 1.USC Computer Vision Group:南加大,多目标跟踪/检测等: 2.ETHZ Computer Vision Lab

一个博客园代码高亮的方案

前言 博客园虽然可定制度高,但是在代码高亮这一块做的并不是很好,默认的配色方案看着很不舒服,而且影响页面的整体协调感. 但正因为博客园的可定制度高,所以我们可以自定义代码高亮的风格. 使用纯 CSS 实现,不需要 JS 权限. 关于博客园的插入代码 本章节只针对博客园的 TinyMce 编辑器讨论,我没有测试其他编辑器(例如 Markdown)的代码高亮解析方案. 博客园的插入代码是有两种方案的. 如图所示. 两种插入代码使用的高亮解析方案不同,各有利弊.我对两种方案都做了适配. 我个人推荐使用