github链接 https://github.com/yt-xy/Django-blog
增加搜索功能
blogs/views.py
class SearchView(IndexView):
def get_context_data(self, **kwargs):
context = super().get_context_data()
context.update({
'keyword': self.request.GET.get('keyword', '')
})
return context
def get_queryset(self):
queryset = super().get_queryset()
keyword = self.request.GET.get('keyword')
if not keyword:
return queryset
# SELECT * FROM post WHERE title ILIKE '%<keyword>%' or title ILIKE '%<keyword>%'
return queryset.filter(Q(title__icontains=keyword) | Q(desc__icontains=keyword))
urls.py
from blogs.views import (
...
SearchView,
)
urlpatterns = [
...
url(r'search/$', SearchView.as_view(), name='search'),
]
templates/blogs/base.html
<form class="form-inline" action="/search/" action="GET">
<input class="form-control" type="search" placeholder="Search" name="keyword" placeholder="Search" aria-label="Search" value="{
{ keyword }}">
<button class="btn btn-outline-success" type="submit">搜索</button>
</form>
增加作者页面
blogs/views.py
class AuthorView(IndexView):
def get_queryset(self):
queryset = super().get_queryset()
author_id = self.kwargs.get('owner_id')
return queryset.filter(owner_id=author_id)
urls.py
from blogs.views import (
AuthorView,
...
)
urlpatterns = [
...
url(r'author/(?P<owner_id>\d+)/$', AuthorView.as_view(), name='author'),
]
增加友链页面
config/views.py
from django.views.generic import ListView
from blogs.views import CommonViewMixin
from config.models import Link
class LinkListView(CommonViewMixin, ListView):
queryset = Link.objects.filter(status=Link.STATUS_NORMAL