成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識(shí)庫 > Django利用AJAX技術(shù)實(shí)現(xiàn)博文實(shí)時(shí)搜索

Django利用AJAX技術(shù)實(shí)現(xiàn)博文實(shí)時(shí)搜索

熱門標(biāo)簽:外呼不封號(hào)系統(tǒng) 荊州云電銷機(jī)器人供應(yīng)商 幫人做地圖標(biāo)注收費(fèi)算詐騙嗎 悟空智電銷機(jī)器人6 溫州旅游地圖標(biāo)注 電信營業(yè)廳400電話申請 蘇州電銷機(jī)器人十大排行榜 遼寧400電話辦理多少錢 江蘇房產(chǎn)電銷機(jī)器人廠家

學(xué)習(xí)Python Web和Django開發(fā)不能只學(xué)習(xí)Python。我們有時(shí)必需借助其它技術(shù)比如AJAX實(shí)現(xiàn)我們想要的功能。今天我們就要利用Django 2.0 + AJAX開發(fā)一個(gè)功能性頁面: 我們一邊輸入關(guān)鍵詞,網(wǎng)頁一邊會(huì)給你提示所找到的博文數(shù)量。

什么是AJAX技術(shù)?它的應(yīng)用場景有哪些?

Ajax 即“Asynchronous Javascript And XML”(異步 JavaScript 和 XML),是指一種創(chuàng)建交互式網(wǎng)頁應(yīng)用的網(wǎng)頁開發(fā)技術(shù)。通過在后臺(tái)與服務(wù)器進(jìn)行少量數(shù)據(jù)交換,Ajax 可以使網(wǎng)頁實(shí)現(xiàn)異步更新。這意味著可以在不重新加載整個(gè)網(wǎng)頁的情況下,對(duì)網(wǎng)頁的某部分進(jìn)行更新。

Ajax常見應(yīng)用場景包括:

  • 搜索提示: 在你輸入關(guān)鍵詞還未提交前,搜索框給你提示。
  • 用戶名驗(yàn)證: 當(dāng)你輸入用戶名時(shí),頁面提示你是否已注冊。
  • 顯示投票結(jié)果:用戶投票后,不用加載頁面即可顯示投票結(jié)果。
  • 評(píng)論加載: 在你提交新的評(píng)論后,不用重新加載整個(gè)網(wǎng)頁就會(huì)顯示新提交的評(píng)論。

以上場景都是Django單靠自己無法實(shí)現(xiàn)的。注意Ajax應(yīng)只用于與服務(wù)器少量數(shù)據(jù)交換,且存安全隱患,不宜廣泛使用。

總體開發(fā)思路

我們創(chuàng)建一個(gè)叫blog的APP,并把它加入到INSTALLED_APP里去,然后在后臺(tái)添加一些文章, 用于搜索(如下所示)。我們需要設(shè)計(jì)2個(gè)功能性頁面: 一個(gè)展示博客文章清單,一個(gè)搜索頁面。

下面我們來看下具體代碼。

models.py

本案例中所用到的Article模型代碼如下: 

from django.db import models
from django.contrib.auth.models import User
from django.urls import reverse
from django.utils.timezone import now


class Article(models.Model):

    STATUS_CHOICES = (
        ('d', '草稿'),
        ('p', '發(fā)表'),
    )

    title = models.CharField('標(biāo)題', max_length=200, unique=True)
    slug = models.SlugField('slug', max_length=60)
    body = models.TextField('正文')
    pub_date = models.DateTimeField('發(fā)布時(shí)間', default=now, null=True)
    create_date = models.DateTimeField('創(chuàng)建時(shí)間', auto_now_add=True)
    mod_date = models.DateTimeField('修改時(shí)間', auto_now=True)
    status = models.CharField('文章狀態(tài)', max_length=1, choices=STATUS_CHOICES, default='p')
    views = models.PositiveIntegerField('瀏覽量', default=0)
    author = models.ForeignKey(User, verbose_name='作者', on_delete=models.CASCADE)


    def __str__(self):
        return self.title

    class Meta:
        ordering = ['-pub_date']
        verbose_name = "文章"

urls.py

前文提到過我們需要設(shè)計(jì)2個(gè)功能性頁面: 一個(gè)展示博客文章清單,一個(gè)搜索。然而在urls.py里我們卻設(shè)計(jì)了3個(gè)URL。這是因?yàn)槲覀冞€要設(shè)計(jì)一個(gè)URL與AJAX進(jìn)行后臺(tái)數(shù)據(jù)交換。這是用戶看不見的,后面我們會(huì)用到這個(gè)URL。當(dāng)ajax發(fā)送請求到/blog/ajax/search/時(shí),Django就會(huì)調(diào)用ajax_search方法來處理。

from django.urls import path, re_path
from . import views

# namespace
app_name = 'blog'

urlpatterns = [

    # 搜索文章
    re_path(r'^search/$', views.article_search, name='article_search'),

    # 用于與ajax交互
    re_path(r'^ajax/search/$', views.ajax_search, name='ajax_search'),

    # 展示所有文章
    path('', views.ArticleListView.as_view(), name='article_list'),

]

views.py

對(duì)應(yīng)3個(gè)URL,我們需要在視圖里編寫3個(gè)處理方法,其中ajax_search用來給搜索頁面返回Json數(shù)據(jù)(查詢到的文章數(shù)量)。article_search方法用來返回搜索結(jié)果。我們?yōu)槭裁床挥胊jax_search返回搜索結(jié)果呢?因?yàn)椴樵兊降臄?shù)據(jù)集可能非常大,而ajax方法一般僅應(yīng)用于與服務(wù)器的少量數(shù)據(jù)交換。

from django.views.generic import ListView
from .models import Article
from django.shortcuts import render
from .forms import SearchForm
from django.http import JsonResponse


# Create your views here.
class ArticleListView(ListView):
    queryset = Article.objects.filter(status='p').order_by('-pub_date')
    paginate_by = 6


def article_search(request):
    if request.method == 'GET':
        form = SearchForm(request.GET)
        if form.is_valid():
            keyword = form.cleaned_data.get("keyword")
            if keyword:
                article_list = Article.objects.filter(title__icontains=keyword)
                return render(request, 'blog/search.html', {'form': form, 'article_list': article_list})
    else:
        form = SearchForm()

    return render(request, 'blog/search.html', {'form': form, 'article_list': False, })


def ajax_search(request):
    if request.method == 'GET':
        keyword = request.GET.get('keyword', None)
        if keyword:
            count = Article.objects.filter(title__icontains=keyword).count()
            data = {'count': count, }
            return JsonResponse(data)

我們著重看下ajax_search是如何工作的。

  • 當(dāng)搜索頁面上ajax的通過GET發(fā)送請求時(shí),服務(wù)器獲取ajax發(fā)送過來的keyword。
  • 如果keyword不為空,服務(wù)器查詢文章標(biāo)題包含有keyword的文章數(shù)量。
  • 服務(wù)器將字典{‘count': count }轉(zhuǎn)化為Json數(shù)據(jù)格式并返回給ajax所在頁面。

模板blog/search.html

我們的模板blog/search.html代碼如下:

{% block content %}
h3>Django Ajax實(shí)時(shí)搜索文章/h3>

form method="get" action="">{% csrf_token %}
    {{ form }}
    input type="submit" value="Search" />
/form>
{% endblock %}


div id="result">/div>

script src="https://code.jquery.com/jquery-3.1.0.min.js">/script>
script>
    $("#id_keyword").bind('input propertychange', function() {
      var keyword = $(this).val();

      $.ajax({
        url: '/blog/ajax/search/',
        data: {
          'keyword': keyword
        },
        type: 'GET',
        dataType: 'json',
        success: function (data) {
        $("#result").html("p>正在實(shí)時(shí)查詢...共" + data.count + "條記錄/p>")
        },

      });
    });
  /script>


{% if article_list %}
p>共找到 {{ article_list | length }} 條記錄。/p>
   ul>
    {% for article in article_list %}
   li>a href="{% url 'blog:article_detail' article.id %}" rel="external nofollow" > {{ article.title }}/a> {{ article.pub_date | date:"Y-m-j" }}/li>
    {% endfor %}
   /ul>
{% endif %}

我們著重看下Ajax如何工作的。

  • 當(dāng)搜索框#id_keyword有屬性變化時(shí),Ajax實(shí)時(shí)獲取#id_keyword的值,并將其通過GET方法發(fā)送至url('/blog/ajax/search')。
  • Django視圖里ajax_search方法處理ajax發(fā)來的請求,并返回json數(shù)據(jù)。
  • 如果服務(wù)器響應(yīng)成功并成功發(fā)來json數(shù)據(jù),將其顯示在id=result的DIV里。

查看效果

下圖是實(shí)時(shí)顯示搜索結(jié)果數(shù)量的效果。隨著關(guān)鍵詞的增長,查詢到的結(jié)果數(shù)量越來越少。

以上就是Django利用AJAX技術(shù)實(shí)現(xiàn)博文實(shí)時(shí)搜索的詳細(xì)內(nèi)容,更多關(guān)于Django用AJAX實(shí)時(shí)搜索的資料請關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • Django如何與Ajax交互
  • Django與AJAX實(shí)現(xiàn)網(wǎng)頁動(dòng)態(tài)數(shù)據(jù)顯示的示例代碼
  • 使用AJAX和Django獲取數(shù)據(jù)的方法實(shí)例
  • Django查詢優(yōu)化及ajax編碼格式原理解析
  • 淺析Django 接收所有文件,前端展示文件(包括視頻,文件,圖片)ajax請求
  • django ajax發(fā)送post請求的兩種方法
  • django框架中ajax的使用及避開CSRF 驗(yàn)證的方式詳解
  • Django中ajax發(fā)送post請求 報(bào)403錯(cuò)誤CSRF驗(yàn)證失敗解決方案
  • Django結(jié)合ajax進(jìn)行頁面實(shí)時(shí)更新的例子
  • Django 通過JS實(shí)現(xiàn)ajax過程詳解

標(biāo)簽:臺(tái)灣 景德鎮(zhèn) 欽州 喀什 黃山 濟(jì)南 宿遷 三沙

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Django利用AJAX技術(shù)實(shí)現(xiàn)博文實(shí)時(shí)搜索》,本文關(guān)鍵詞  Django,利用,AJAX,技術(shù),實(shí)現(xiàn),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Django利用AJAX技術(shù)實(shí)現(xiàn)博文實(shí)時(shí)搜索》相關(guān)的同類信息!
  • 本頁收集關(guān)于Django利用AJAX技術(shù)實(shí)現(xiàn)博文實(shí)時(shí)搜索的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    精品成人国产在线观看男人呻吟| 成人午夜短视频| jizz亚洲女人高潮大叫| 欧美孕妇孕交黑巨大网站| 91青草视频久久| 国产精品久久7| 九色丨蝌蚪丨成人| 亚洲AV成人无码一二三区在线| 欧美日韩激情视频一区二区三区| 亚洲视频导航| 国产又大又黄又粗的视频| 妓院一钑片免看黄大片| 亚洲最大的网站| 影音先锋中文字幕在线播放| 亚洲色图视频在线观看| 国产精品综合二区| 欧美特大特白屁股xxxx| 你懂的一区二区三区| 国产精品免费在线免费| 日韩激情文学| 欧美日韩国产精品一区二区| 老熟妇一区二区三区啪啪| 国产一区二区不卡在线| 欧美天堂视频| 亚洲第一成人在线视频| 国产亚洲精品久久久久久豆腐| 一区二区不卡| 天堂色在线视频| 欧美日韩在线播放三区四区| 国产欧美午夜| 成人在线免费高清视频| 在线视频 中文字幕| 中文字幕不卡在线视频极品| caopeng视频| 欧美黑人性生活视频| 国产精品你懂的在线观看| 国产一区 在线播放| 超碰中文字幕在线观看| 在线播放中文字幕一区| 亚洲一级少妇| 亚洲精品午夜精品| 东京干手机福利视频| 伊人在我在线看导航| 日本精品裸体写真集在线观看| 中国动漫在线观看完整版免费| 国产精品久av福利在线观看| 国产精品视频免费观看| 韩国三级hd两男一女| 久久精品播放| 日本免费黄网站| 国产精品丝袜久久久久久消防器材| 日本精品一区二区三区在线观看视频| 欧美一区二区三区在线| 国产福利第一视频| 99热在线只有精品| 116美女写真午夜一级久久| 中文字幕21页在线看| 在线免费观看中文字幕| 欧美一区成人| 国产视频一区二区在线观看| 男人在线观看视频| 亚洲综合伊人久久| 亚洲国产日日夜夜| 国内老熟妇对白xxxxhd| 91最新国产视频| 91大神在线观看线路一区| 四虎永久免费影院| 中文字幕一区二区三区有限公司| 免费国产羞羞网站美图| 亚洲高清不卡av| 国产黄色在线播放| aa视频在线观看| 日韩欧美一区二区三区在线视频| 性做久久久久久久久久| 免费看日本黄色片| 肉丝袜脚交视频一区二区| 成人免费乱码大片a毛片软件| 一本色道久久88| 国产一区二区在线观看视频| 欧美精选午夜久久久乱码6080| xxxx日韩| 免费一级做a爰片久久毛片潮| 日韩视频在线一区二区| 制服丝袜中文字幕亚洲| 99久久婷婷国产综合精品首页| 日本精品久久久久久久| 欧美成人精品在线视频| 毛片基地一级大毛片| 国产精品国产三级国产aⅴ| 欧美一区二区三区久久综合| bl动漫在线观看| 96成人在线视频| 一级α片免费看刺激高潮视频| 不卡视频免费播放| 中文字幕影音先锋| 91美女片黄在线观看| 欧美人与物videos另类xxxxx| 久久久999视频| 麻豆视频在线观看| 户外露出一区二区三区| 骚虎视频欧美| 欧美国产高跟鞋裸体秀xxxhd| 九色免费视频| av免费一区二区| 蜜臀av一区二区在线免费观看| 欧美日韩另类丝袜其他| 亚洲美女免费在线| av资源网在线观看| 久久久久久久影院| 日本在线视频中文有码| 色大师av一区二区三区| 久久久久久黄| 欧美丰满少妇xxxxx做受| 欧美男同性恋视频网站| 国产成人精品av| 这里只有精品999| 色悠悠久久久久| 欧美日韩一区二区三区视频| 黄色影院在线观看| 老司机一区二区三区| 免费一级特黄特色毛片久久看| 国产成年精品| 日韩美女视频一区二区在线观看| 青春草免费在线视频| 久久一级黄色片| 免费一区二区三区| 国产资源在线观看入口av| 日韩精品成人一区二区在线观看| √天堂8资源中文在线| 亚洲午夜久久久久久久久电影网| 日韩av中文在线观看| 国内激情久久| 国产色在线播放| 伊人影院蕉久影院在线播放| 一本久道久久综合多人| 福利片在线观看| 国产成都精品91一区二区三| 亚洲精品久久7777777| 久久综合伊人77777| 成人在线视频一区| 欧美日韩一区二区区别是什么| www.四虎影视.com| 在线观看中文字幕不卡| 中文无码久久精品| 国精产品一区一区二区三区mba| 一区二区三区精品视频在线观看| 日本精品影院| 色婷婷国产精品免| 日韩电影在线免费| 韩国女主播成人在线| 国产成人亚洲欧美电影| 这里只有久久精品视频| 男人添女人下部高潮视频在观看| 国产精品涩涩涩视频网站| 国产精品高潮呻吟久久av野狼| 国产女优在线播放| 欧美久久久久免费| 亚洲国产成人久久综合一区| 午夜精品免费在线观看| 中文字幕亚洲日本| 国产成人精品福利一区二区三区| 国产女人爽到高潮a毛片| 日韩欧美一级特黄在线播放| 韩国av中国字幕| 手机av在线播放| 亚洲 自拍 另类小说综合图区| 日韩欧美成人区| av在线二区| 欧美videossex另类| 亚洲精品视频导航| 久青草视频在线播放| 日韩日韩日韩日韩| 青草av在线| 国产欧美一区二区三区精品观看| 极品一线天粉嫩虎白馒头| 国产一区二区导航在线播放| 国产中文一区二区三区| 亚洲国产精品成人久久蜜臀| 日韩不卡视频在线观看| 在线精品国产欧美| 色婷婷激情视频| 五月天婷婷色综合| 久久五月精品中文字幕| 久久综合九色综合网站| 国产精品日韩成人| 黄p免费网站| 免费看ww视频网站入口| 日本成人三级电影| 日韩美女黄色片| 日韩成人在线一区| 国产69精品久久久久9| 精品国产亚洲在线| 久久精品中文字幕一区| 精品国产免费久久久久久婷婷| 国产精品国模在线| 西野翔中文久久精品字幕| 中文字幕日韩欧美精品在线观看| 一区二区三区四区不卡视频| 国产精品私人影院| 国内毛片毛片毛片毛片毛片| 国产又粗又猛又色| 好吊操这里只有精品| 欧美一区二区三区四区五区| 亚洲综合大片69999| 国产精品免费视频一区二区| 久久在线免费观看| 91啦中文在线观看| 日本午夜一区二区三区| 亚洲午夜激情| 国产成人精品久久二区二区| 日本道精品一区二区三区| 99久久久久国产精品免费| 欧美成人短视频| 肉色欧美久久久久久久免费看| 日韩久久在线| 自拍偷拍欧美视频| 婷婷福利视频导航| 国产日韩视频| 精品久久久久久久久中文字幕| 国产91丝袜在线播放九色| 免费观看亚洲视频| 在线观看黄网站免费继续| 国产精品国产三级国产试看| 137大胆人体在线观看| 福利一区二区三区视频在线观看| 国产va亚洲va在线va| 欧美亚洲日本在线| 一区二区三区电影网| 久久不见久久见免费视频7| 久久久久久免费| www日本高清| 亚洲天堂第一区| 一区二区三区产品免费精品久久75| 日本不卡不码高清免费观看| 日本不卡视频在线观看| 中文字幕中文字幕在线十八区| 在线观看精品国产| 免费看男男www网站入口在线| 国产一区美女在线| 在线免费不卡视频| 波多野结衣一区二区三区四区| 亚洲伊人伊色伊影伊综合网| 91日韩视频在线观看| 日韩中文字幕在线观看| 国内视频自拍在线视频| 亚洲丝袜精品| 国产精品一区在线看| 黄色网免费观看| 国内露脸中年夫妇交换精品| 国产精品.www| 国产日韩精品在线播放| 美女网站一区二区| 欧洲美女网站| 91精品啪aⅴ在线观看国产| 国产美女无遮挡永久免费| 欧美精品aaaa| 欧美精品第1页| 欧美在线免费观看视频| 欧美伦理免费在线| 国产精品国产三级国产专区51| 国产三区视频在线观看| 在线观看www91| 久草成人在线视频| 色综合天天综合色综合av| 亚洲成年人电影网站| 久久天堂av综合合色蜜桃网| 亚洲а∨精品天堂在线| 51蜜桃传媒精品一区二区| jizzzz日本| 五月天亚洲视频| 久久mv成人精品亚洲动漫| 久草精品视频| 天天操天天干天天做| 成人精品第一区二区三区| 亚洲精品成人无码毛片| 91丨九色丨蝌蚪丨老版| 女明星视频黄又免费| 国产综合中文字幕| 在线人成动漫视频在线观看| 久久久av亚洲男天堂| 欧美国产精品中文字幕| 精品不卡一区二区| 日本性视频网站| 亚洲少妇诱惑| 卡一卡二国产精品| 免费黄漫在线观看| 熟妇人妻一区二区三区四区| 99在线精品免费视频| 国产丝袜美腿一区二区三区| 欧美日韩大片一区二区三区| 久久久久久久久99精品大| 日本美女一级视频| 妖精一区二区三区精品视频| 91久久精品无码一区二区| 青青艹视频在线| 小早川怜子痴女在线精品视频| 精品素人av| 粉嫩嫩av羞羞动漫久久久| 香蕉久久夜色精品国产| 99精品国产高清一区二区| 日本少妇xxxxx| 亚洲精品国模| 无套白嫩进入乌克兰美女| 99精品视频免费看| 中文字幕有码无码人妻av蜜桃| 菠萝蜜视频在线观看www入口| www.av在线视频| 久久亚洲精品成人| 青春草在线视频观看| 亚洲视频在线观看不卡| 精品成人av一区| 免费自拍视频| 日本特黄特色aaa大片免费| 五月婷婷亚洲综合| 日韩欧美国产不卡| 影音先锋在线影院| 中文字幕乱在线伦视频乱在线伦视频| 亚洲欧洲美洲一区二区三区| 97国产精品videossex| 国产一区二区三区在线观看免费| 中文字幕黄色大片| 在线观看精品自拍私拍| 91欧洲在线视精品在亚洲| 8x拔播拔播x8国产精品| 亚洲精品97久久| 精品69视频一区二区三区Q| 三级网站在线看| www.亚洲色图.com|