Django + uwsgi + nginx + boottstrap 은 자신의 블 로 그 를 만 듭 니 다 - 11. 검색 과 ReadMore

5498 단어
검색 기능
검색 기능 구현 디자인:
  • 전단 인터페이스 에 검색 키 워드 를 입력 하여 대응 하 는 view 로 전송
  • 대응 하 는 view 에서 데이터베이스 키워드 검색
  • 여기 서 검색 하면 글 이름 이나 전체 텍스트 만 검색 할 수 있 습 니 다
  • 우선 myblog / templates 에 모든 입력 상자 추가
    
    

    myblog / article / views. py 에 검색 논리 추가
    def blog_search(request):
        if 's' in request.GET:
            s = request.GET['s']
            if not s:
                return render(request,'home.html')
            else:
                post_list = Article.objects.filter(title__icontains = s)
                if len(post_list) == 0 :
                    return render(request,'archives.html', {'post_list' : post_list,
                                                        'error' : True})
                else :
                    return render(request,'archives.html', {'post_list' : post_list,
                                                        'error' : False})
        return redirect('/')
    

    간단 한 견 해 를 위해 archives. html 를 직접 수정 하여 조회 논리 에 부합 하도록 합 니 다.
    {% extends "base.html" %}
    
    {% block content %}
    
    {% if error %}

    {% else %} {% for post in post_list %}

    {{ post.title }}

    {% endfor %} {% endif %}
    {% endblock %}

    if 판단 논 리 를 추가 하고 views 의 archives 를 수정 해 야 합 니 다.
    def archives(request) :
        try:
            post_list = Article.objects.all()
        except Article.DoesNotExist :
            raise Http404
        return render(request, 'archives.html', {'post_list' : post_list, 
                                                'error' : False})
    

    마지막 으로 my 추가blog/my_blog / urls. py 설정 url
    urlpatterns = patterns('',
        # Examples:
        # url(r'^$', 'my_blog.views.home', name='home'),
        # url(r'^blog/', include('blog.urls')),
    
        url(r'^admin/', include(admin.site.urls)),
        url(r'^$', 'article.views.home', name = 'home'),
        url(r'^(?P\d+)/$', 'article.views.detail', name='detail'),
        url(r'^archives/$', 'article.views.archives', name = 'archives'),
        url(r'^aboutme/$', 'article.views.about_me', name = 'about_me'),
        url(r'^tag(?P\w+)/$', 'article.views.search_tag', name = 'search_tag'),
        url(r'^search/$','article.views.blog_search', name = 'search'),
    )
    

    ReadMore 기능
    ReadMore 의 전단 버튼 인터페이스 설정 은 이미 추가 되 었 기 때문에 간단 한 설정 만 하면 됩 니 다.
    Django 에 내 장 된 filter 를 사용 하면 속도 가 실 현 됩 니 다.
    {{ value|truncatewords:2 }} #  2         ,        ,     
    

    여 기 는 my 만 수정 하면 됩 니 다.blog / templates / home. html 인터페이스의 변수 필터
    #        10
     {{ post.content|custom_markdown|truncatewords_html:100 }}
    

    브 라 우 저 에 입력http://127.0.0.1:8000/효율 을 볼 수 있 습 니 다.

    좋은 웹페이지 즐겨찾기