Django企业开发实战-blog项目(9)

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值