中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用Django如何實現一個分頁與搜索功能

發布時間:2021-04-14 16:20:30 來源:億速云 閱讀:196 作者:Leah 欄目:開發技術

這期內容當中小編將會給大家帶來有關使用Django如何實現一個分頁與搜索功能,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

第一步,寫路由:為了清晰,這里只給出主頁和展示頁面的路由。

urls.py:

from django.urls import path
from . import views
from django.conf.urls.static import static
from django.conf import settings
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
 
# from django.contrib import staticfiles
 
urlpatterns = [
 # 主頁
 path('', views.index),
 
 # 訪問他人信息入口,分頁展示
 path('other/profile', views.request_user),
 
 
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns += staticfiles_urlpatterns()

第二步,寫視圖:這里做了訪問限制,登錄才能訪問

views.py:

from django.contrib.auth.decorators import login_required
from django.shortcuts import render, redirect
from django.http import HttpResponseRedirect, HttpResponse
from django.contrib.auth import authenticate, login, logout
from .models import UserInfo, Email_Message, Wastes
from django.contrib.auth.models import AnonymousUser
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
 
@login_required(login_url='/tologin')
def request_user(request):
 # 實現搜索
 key = request.GET.get('key')
 all_users = UserInfo.objects.filter(cate="買家").all()
 userlist = []
 # 如果前端傳入關鍵字,才會進行檢索,否則顯示全部買家
 if key:
  for user in all_users:
   if key in user.address:
    userlist.append(user)
  all_users = userlist
 if all_users:
  paginator = Paginator(all_users, 2)
  page = request.GET.get('page')
  try:
   contacts = paginator.page(page)
  except PageNotAnInteger:
   contacts = paginator.page(1)
  except EmptyPage:
   contacts = paginator.page(paginator.num_pages)
  return render(request, 'Myapp/userlist.html', {'contacts': contacts})
 else:
  info = '暫無數據'
  return render(request, 'Myapp/userlist.html', {'info': info})

分頁的原理是用到了django自帶的分頁組件

需要注意的是,搜索的關鍵字傳參,用的是GET請求,而不是POST請求

簡單來說,就是先判斷前端頁面是否用搜索框搜索了關鍵字,如果搜索了,那么這個詞會被

key = request.GET.get('key')

賦值給key,然后進行后續判斷處理即可。

如果沒有,就正常展示我們需要展示的。

分頁的原理。

可以去看這個組件的文檔介紹。

如果返回的key檢索不到結果,返回空數據頁,并提醒。

html代碼:

{% load static %}
<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
<!--[if (gte IE 9)|!(IE)]><!-->
<html lang="en"> <!--<![endif]-->
<head>
 
 <!-- favicon.ico
 ================================================== -->
 <link rel='shortcut icon' href="{% static 'Myapp/img/favicon.con' %}" rel="external nofollow" type="image/x-icon"/>
 
 <!-- Basic Page Needs
 ================================================== -->
 <meta charset="utf-8">
 <title>Detail</title>
 <meta name="description" content="">
 <meta name="author" content="">
 
 <!-- Mobile Specific Metas
	================================================== -->
 <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
 
 <!-- CSS
	================================================== -->
 <link rel="stylesheet" href="{% static 'Myapp/css/zerogrid.css' %}" rel="external nofollow" >
 <link rel="stylesheet" href="{% static 'Myapp/css/style.css' %}" rel="external nofollow" >
 <link rel="stylesheet" href="{% static 'Myapp/css/lightbox.css' %}" rel="external nofollow" >
 
 <!-- Custom Fonts -->
 <link href="{% static 'Myapp/assets/css/font-awesome.min.css' %}" rel="external nofollow" rel="stylesheet" type="text/css">
 
 
 <link rel="stylesheet" href="{% static 'Myapp/css/menu.css' %}" rel="external nofollow" >
 <link rel="stylesheet" href="{% static 'Myapp/assets/css/bootstrap.min.css' %}" rel="external nofollow" >
 <script src="{% static 'Myapp/js/jquery1111.min.js' %}" type="text/javascript"></script>
 <script src="{% static 'Myapp/js/script.js' %}"></script>
 
 <!--[if lt IE 8]>
  <div style=' clear: both; text-align:center; position: relative;'>
   <a href="http://windows.microsoft.com/en-US/internet-explorer/Items/ie/home?ocid=ie6_countdown_bannercode" rel="external nofollow" >
   <img src="http://storage.ie6countdown.com/assets/100/images/banners/warning_bar_0000_us.jpg" border="0" height="42" width="820" alt="You are using an outdated browser. For a faster, safer browsing experience, upgrade for free today." />
  </a>
  </div>
 <![endif]-->
 <!--[if lt IE 9]>
		<script src="js/html5.js"></script>
		<script src="js/css3-mediaqueries.js"></script>
	<![endif]-->
 
</head>
 
<body>
<div class="wrap-body">
 
 <!--////////////////////////////////////Header-->
 <header class="zerogrid">
  <div class="logo"><img src="{% static 'Myapp/img/logo.png' %}" alt=""/></div>
  <div id='cssmenu' class="align-center">
   <ul>
    <li><a href='http://127.0.0.1:8000/'><span>主頁</span></a></li>
    <li><a href='http://127.0.0.1:8000/about'><span>關于我們</span></a></li>
    <li><a href='http://127.0.0.1:8000/show_detail'><span>每日看價</span></a></li>
    <li><a href='http://127.0.0.1:8000/other/profile'><span>找個買家</span></a></li>
    <li class='last'><a href='http://127.0.0.1:8000/contact'><span>聯系我們</span></a></li>
   </ul>
  </div>
  <form >
   {% csrf_token %}
   <label>
    <div class="form-group">
     <input type="search" class="form-control" name="key" placeholder="您可輸入所在城市以檢索買家">
    </div>
   </label>
   <input class="btn btn-default" type="submit" value="搜索">
  </form>
 </header>
 
 <!--////////////////////////////////////Container-->
 <div >
  <table  class="table table-bordered">
   <tr  class="success">
    <td>昵稱</td>
    <td>地址</td>
    <td>最近活躍</td>
   </tr>
   {% for u in contacts %}
    <tr class="info">
     <td><a
       href="http://127.0.0.1:8000/other/profile/{{ u.username }}" rel="external nofollow" >{{ u.username }}</a>
     </td>
     <td>{{ u.address }}</td>
     <td>{{ u.last_login }}</td>
    </tr>
   {% endfor %}
  </table>
 </div>
 
 
 <div class="navigation">
  <ul>
   {% for pg in contacts.paginator.page_range %}
    {% if contacts.number == pg %}
     <li class="active"><a href="?page={{ pg }}" rel="external nofollow" rel="external nofollow" >{{ pg }}</a></li>
    {% else %}
     <li><a href="?page={{ pg }}" rel="external nofollow" rel="external nofollow" >{{ pg }}</a></li>
    {% endif %}
   {% endfor %}
 
   {% if contacts.has_next %}
    <li><a href="?page={{ contacts.next_page_number }}" rel="external nofollow" >下一頁</a></li>
   {% endif %}
  </ul>
 </div>
 <!--////////////////////////////////////Footer-->
 
</div>
{% if info %}
 <script>
  window.alert('{{ info }}');
 </script>
{% endif %}
</body>
</html>

效果:

主頁主要功能部分:

使用Django如何實現一個分頁與搜索功能

信息頁分頁與搜索:搜索框和分頁都是存在的,目前是第一頁:http://127.0.0.1:8000/other/profile

使用Django如何實現一個分頁與搜索功能

第二頁:http://127.0.0.1:8000/other/profile?page=2

使用Django如何實現一個分頁與搜索功能

搜索測試:

使用Django如何實現一個分頁與搜索功能

使用Django如何實現一個分頁與搜索功能

搜索無效信息測試:

使用Django如何實現一個分頁與搜索功能

使用Django如何實現一個分頁與搜索功能

使用Django如何實現一個分頁與搜索功能

上述就是小編為大家分享的使用Django如何實現一個分頁與搜索功能了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宜黄县| 吉林省| 印江| 拜城县| 松桃| 临泽县| 六枝特区| 美姑县| 都昌县| 左云县| 临西县| 卢龙县| 唐海县| 临江市| 昌平区| 赤壁市| 定结县| 新津县| 塔城市| 涿鹿县| 长治县| 大名县| 东丽区| 葵青区| 通渭县| 黄平县| 丹凤县| 察雅县| 波密县| 六安市| 吴旗县| 玛沁县| 德惠市| 曲阜市| 上高县| 石河子市| 青河县| 浦县| 桦甸市| 濮阳市| 怀来县|