Django学习10-扩展User模型

本文介绍了如何在Django中扩展默认的User模型,包括创建代理模型和一对一配置文件模型,展示了添加用户资料、显示和编辑用户资料的实现过程,并讨论了在用户注册时自动创建个人信息的方法以及使用自定义User模型的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

添加搜索功能

利用在导航栏上的搜索框,搜索相关的topics。使用QuerySet的filter筛选进行简单的搜索功能实现。

def search(request):
    key_word = request.POST.get('key_word')
    if not key_word:
        messages.add_message(request, messages.WARNING, '请输入查询内容')
        return HttpResponseRedirect(reverse('learning_logs:topics'))
    topics = Topic.objects.filter(text__contains=key_word).all()
    paginator = Paginator(topics, 10)  # 每页25条
    try:
        page = request.GET.get('page')
    except InvalidPage:
        raise Http404('指定的页面不存在')
    topics = paginator.get_page(page) # 获取指定页面
    context = {
   
   'topics':topics}
    return render(request, 'topics.html', context)

类似topics显示全部主题的视图函数,只是这里在前边使用request获取的关键字key_word对每条topic的text字段进行筛选,text__contains筛选包含有关键字的主题。对应的URL视图:

    path("search/", views.search, name='search'),

在base.html的导航栏中修改内置的搜索表单:

      <form class="form-inline my-2 my-lg-0" action="{% url "learning_logs:search"%} " method="post">
        {% csrf_token %}
        <input class="form-control mr-sm-2" type="search" placeholder="Search" aria-label="Search" name="key_word">
        <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
      </form>

同样使用{% csrf_token %},防御跨站请求伪造(CSRF)攻击的机制。
在搜索框输入Similar,查询:
在这里插入图片描述
这种查询机制较为简单,可以尝试使用 django-haystack进行搜索

添加用户资料

基本上所有的社交网站都会给用户提供资料页面,简单显示用户在网站的活动情况。当前使用的时Django默认的用户模型,且只有emailusername作为个人信息,所以需要拓展用户模型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值