组合搜索

 


 urls.py


url(r'^movie-(?P<m_caption_id>\d+)-(?P<m_area_id>\d+)-(?P<m_time_id>\d+)/', views.movie),

1
def movie(request,*args,**kwargs): 2 conditions = {} 3 for k,v in kwargs.items(): 4 # 获取url传递的值 {'m_caption_id':'值','m_area_id':'值','m_time_id':'值'} 5 kwargs[k] = int(v) 6 7 if v == '0': 8 pass 9 else: 10 conditions[k] = v 11 #以上是定义过滤条件, 12 # 如果url:/movie-值-值-值 中的值为0,则什么都不做,即/movie-0-0-0 13 # condition还是空字典,不过滤任何条件 14 #否则将{'m_caption_id':'值','m_area_id':'值','m_time_id':'值'}加入到condition字典中 15 type = models.Movie_type.objects.all() 16 area = models.Movie_area.objects.all() 17 time = models.Movie_time.objects.all() 18 movie = models.Movie.objects.filter(**conditions) 19 20 21 return render(request,'movie.html',{'type_list':type, 22 'area_list':area, 23 'time_list':time, 24 'movie_list':movie, 25 'kwargs_dict':kwargs}) 26 #最后一句,获取当前movie-值-值-值 中的值

 

movie.html
 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6 </head>
 7 <style>
 8     .condition a{
 9         display: inline-block;
10         margin: 5px;
11         padding: 5px;
12         border: 1px solid seagreen;
13     }
14     .condition a.active{
15         background-color: #a6e1ec;
16     }
17 </style>
18 <body>
19 <div class="condition">
20     <div>
21         <h5>类型</h5>
22         {% if kwargs_dict.m_caption_id == 0 %}
23             <a class='active' href="/app01/movie-0-{{ kwargs_dict.m_area_id }}-{{ kwargs_dict.m_time_id }}">全部</a>
24         {% else %}
25             <a href="/app01/movie-0-{{ kwargs_dict.m_area_id }}-{{ kwargs_dict.m_time_id }}">全部</a>
26         {% endif %}
27 
28         {% for row in type_list %}
29             {% if row.id == kwargs_dict.m_caption_id %}
30                 <a class='active' href="/app01/movie-{{ row.id }}-{{ kwargs_dict.m_area_id }}-{{ kwargs_dict.m_time_id }}">{{ row.caption }}</a>
31             {% else %}
32                 <a href="/app01/movie-{{ row.id }}-{{ kwargs_dict.m_area_id }}-{{ kwargs_dict.m_time_id }}">{{ row.caption }}</a>
33             {% endif %}
34         {% endfor %}
35 
36 
37 
38         <h5>地区</h5>
39         {% if kwargs_dict.m_area_id == 0 %}
40             <a class='active' href="/app01/movie-{{ kwargs_dict.m_caption_id }}-0-{{ kwargs_dict.m_time_id }}">全部</a>
41         {% else %}
42             <a href="/app01/movie-{{ kwargs_dict.m_caption_id }}-0-{{ kwargs_dict.m_time_id }}">全部</a>
43         {% endif %}
44     
45         {% for row in area_list %}
46             {% if row.id == kwargs_dict.m_area_id %}
47                 <a class='active' href="/app01/movie-{{ kwargs_dict.m_caption_id }}-{{ row.id }}-{{ kwargs_dict.m_time_id }}">{{ row.area }}</a>
48             {% else %}
49                 <a href="/app01/movie-{{ kwargs_dict.m_caption_id }}-{{ row.id }}-{{ kwargs_dict.m_time_id }}">{{ row.area }}</a>
50             {% endif %}
51         {% endfor %}
52 
53     
54         <h5>年代</h5>
55         {% if kwargs_dict.m_time_id == 0 %}
56             <a class='active' href="/app01/movie-{{ kwargs_dict.m_caption_id }}-{{ kwargs_dict.m_area_id }}-0">全部</a>
57         {% else %}
58             <a href="/app01/movie-{{ kwargs_dict.m_caption_id }}-{{ kwargs_dict.m_area_id }}-0">全部</a>
59         {% endif %}
60     
61         {% for row in time_list %}
62             {% if row.id == kwargs_dict.m_time_id %}
63                 <a class='active' href="/app01/movie-{{ kwargs_dict.m_caption_id }}-{{ kwargs_dict.m_area_id }}-{{ row.id }}">{{ row.time }}</a>
64             {% else %}
65                 <a href="/app01/movie-{{ kwargs_dict.m_caption_id }}-{{ kwargs_dict.m_area_id }}-{{ row.id }}">{{ row.time }}</a>
66             {% endif %}
67         {% endfor %}
68 
69       <hr>
70         <h3>搜索结果</h3>
71         <ul>
72         {% for row in movie_list %}
73             <li>{{ row.name }}----{{ row.score }}</li>
74         {% endfor %}
75         </ul>
76     </div>
77 </div>
78 </body>
79 </html>


models.py
 1 class Movie_type(models.Model):
 2     caption = models.CharField(max_length=16)
 3 class Movie_area(models.Model):
 4     area = models.CharField(max_length=16)
 5 class Movie_time(models.Model):
 6     time = models.CharField(max_length=32)
 7 
 8 class Movie(models.Model):
 9     name = models.CharField(max_length=16)
10     summary = models.CharField(max_length=255)
11     score = models.CharField(max_length=16)
12     m_caption = models.ForeignKey(Movie_type)
13     m_area = models.ForeignKey(Movie_area)
14     m_time = models.ForeignKey(Movie_time)

 

posted @ 2018-01-30 21:24  生如苦艾  阅读(120)  评论(0编辑  收藏  举报