python&django 实现页面中关联查询小功能(基础篇)

时间:2022-05-08 19:56:56

效果

实现效果图如下,根据过滤条件查询相关信息。

python&django 实现页面中关联查询小功能(基础篇)

知识点

1.配置URL,在路由中使用正则表达式

2.过滤查询

代码

setting.py

 from django.contrib import admin
from django.urls import path,re_path,include
from app01 import views
urlpatterns = [
path('admin/', admin.site.urls),
path('article-(\d+)-(\d+).html', views.article),
re_path(r'article-(?P<article_type_id>\d+)-(?P<category_id>\d+).html', views.article,name="article"), #正则过滤
]

models.py

 from django.db import models

 # Create your models here.

 class Category(models.Model):
caption = models.CharField(max_length=16) class ArticleType(models.Model):
caption = 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)

view.py

 from django.shortcuts import render
from app01 import models
# Create your views here. def article(request,*args,**kwargs):
print(kwargs) # 打印所有参数
contition = {} # 定义一个空集合,接收参数
for k,v in kwargs.items():
kwargs[k] = int(v) # 由于参数类型都为str类型,所以该处进行转换
if v == '':
pass
else:
contition[k] = v # 当参数为非0时 进行接收
print(args)
article_type_list = models.ArticleType.objects.all()
category_list = models.Category.objects.all()
result = models.Article.objects.filter(**contition) # 过滤查询
return render(request,
"article.html",
{
'result':result,
'article_type_list':article_type_list,
'category_list':category_list,
'arg_dict':kwargs,
}
)

article.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: darkgreen;
}
</style>
</head>
<body>
<h1>过滤条件</h1>
<div class="condition">
{% 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>
{% else %}
<a href="/article-{{ row.id }}-{{ arg_dict.category_id }}.html">{{ row.caption }}</a>
{% endif %}
{% endfor %} </div>
<div class="condition">
{% 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 }}</a>
{% else %}
<a href="/article-{{ arg_dict.article_type_id }}-{{ row.id }}.html">{{ row.caption }}</a>
{% endif %} {% endfor %}
</div>
<h1>查询结果</h1>
<ul>
{% for row in result %}
<li>{{ row.id }}-{{ row.title }}</li>
{% endfor %}
</ul>
</body>
</html>

python&django 实现页面中关联查询小功能(基础篇)的更多相关文章

  1. python&amp&semi;django 实现页面中关联查询小功能(中级篇)

    目的 组合搜索实现如下图功能 知识点 1.使用自定义标签模板(templatetags) 实现 models.py 和 views.py和初级篇一样 重点如下:在app01目录下创建templatet ...

  2. Python抓取页面中超链接&lpar;URL&rpar;的三中方法比较&lpar;HTMLParser、pyquery、正则表达式&rpar; &lt&semi;转&gt&semi;

    Python抓取页面中超链接(URL)的3中方法比较(HTMLParser.pyquery.正则表达式) HTMLParser版: #!/usr/bin/python # -*- coding: UT ...

  3. python Django注册页面显示头像

    python Django注册页面显示头像(views) def register(request): ''' 注册 :param request: :return: ''' if request.m ...

  4. THINKPHP 中关联查询&lpar;多表查询&rpar;

    THINKPHP 中关联查询(多表查询)可以使用 table() 方法或和join方法,请看示例: 1.Table方法:定义要操作的数据表名称,可以动态改变当前操作的数据表名称,需要写数据表的全名,包 ...

  5. OAF在打开的新页面中添加按钮,功能是关闭当前页面

    OAF在打开的新页面中添加按钮,功能是关闭当前页面 javascript:close()

  6. SSM-MyBatis-15:Mybatis中关联查询(多表操作)

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 先简单提及一下关联查询的分类 1.一对多 1.1单条SQL操作的 1.2多条SQL操作的 2.多对一 2.1单 ...

  7. 关于python&plus;django操作数据库中的表

    数据库中的表示这样设计的 class C(models.Model): name = models.CharField(max_length=32) class B(models.Model): na ...

  8. Mongoose中关联查询populate的使用

    MongoDB中没有join的特性,因此无法使用join进行表的连接和关联查询,在Mongoose中封装了populate方法,在定义一个 Schema 的时候可以指定了其中的字段(属性)是另一个Sc ...

  9. yii2中关联查询

    yii2 ActiveRecord多表关联以及多表关联搜索的实现 一个老生常谈的问题.最近通过群里的反馈,觉得很多人还是没有去理解这个问题.今天把这个问题讲明白了,看看yii2 ActiveRecor ...

随机推荐

  1. vim 查找时忽略大小写

    :set ic 忽略大小写#ignorecase :set noic 不忽略大小写#noignorecase

  2. BZOJ 1688&colon; &lbrack;Usaco2005 Open&rsqb;Disease Manangement 疾病管理

    Description Alas! A set of D (1 <= D <= 15) diseases (numbered 1..D) is running through the fa ...

  3. android 遍历所有文件夹和子目录搜索文件

    java代码: import java.io.File; import android.app.Activity; import android.os.Bundle; import android.v ...

  4. how computer boot up&quest;

    The power button activates the power supply in the PC, sending power to the motherboard and other co ...

  5. Android手机图片适配问题

    需求:今天在做ListView的时候遇到一个问题,就是ListView中加载图片的时候.有些图片的大小比较大,所以会出现图片显示不充分的问题. 首先,再不做任何处理的情况下,大小是这样的.宽度是Wra ...

  6. 操作系统处理内存时内存页为4k

    windows和unix处理内存时,一个内存页的大小都为4k. 测试代码 int main() { while (1) { int *p = (int *)malloc(1024); getchar( ...

  7. css:关于position和float

    在CSS中,我们是通过定位属性position来进行定位的,具体它有如下几个属性值.常见的属性有如下几个: absolute  生成绝对定位的元素,相对于static定位以外的第一个父元素进行定位.元 ...

  8. 20172308 实验一《Java开发环境的熟悉》实验报告

    20172308 2017-2018-2 <程序设计与数据结构>实验1报告 课程:<程序设计与数据结构> 班级: 1723 姓名: 周亚杰 学号:20172308 实验教师:王 ...

  9. uva11149矩阵快速幂

    求A+A^1+...+A^n 转换一下变成|A  E|,的n+1次方就是|A^(n+1)  A^n+...+A+E| |0  E|                       |    0       ...

  10. Android开发利用Volley框架下载和缓存网络图片

    2013年Google I/O大会上推出了一种新的网络通信框架——Volley,Volley可是说是把AsyncHttpClient和Universal-Image-Loader的优点集于了一身,既可 ...