当前位置: 首页 > news >正文

wordpress 网站工具栏nba最新排名

wordpress 网站工具栏,nba最新排名,商丘seo教程,网站怎么推广出去1. 引言 Django 作为一个强大的 Web 框架,内置了用户认证系统。然而,实际项目中我们通常需要扩展用户模型,以满足不同的业务需求。Django 提供了继承 AbstractUser 的方式,让我们能够轻松地定制用户模型。本文将通过一个自定义用…

1. 引言

Django 作为一个强大的 Web 框架,内置了用户认证系统。然而,实际项目中我们通常需要扩展用户模型,以满足不同的业务需求。Django 提供了继承 AbstractUser 的方式,让我们能够轻松地定制用户模型。本文将通过一个自定义用户模型的实例,深入解析 Django 自定义用户模型的各个知识点。

2. 自定义用户模型代码示例

下面的代码展示了如何在 Django 中创建一个自定义的用户模型 BlogUser,并添加额外的字段和功能:

from django.contrib.auth.models import AbstractUser
from django.db import models
from django.urls import reverse
from django.utils.timezone import now
from django.utils.translation import gettext_lazy as _
from djangoblog.utils import get_current_siteclass BlogUser(AbstractUser):nickname = models.CharField(_('Nickname'), max_length=100, blank=True)creation_time = models.DateTimeField(_('Creation time'), default=now, editable=False)last_modify_time = models.DateTimeField(_('Last modified time'), auto_now=True)source = models.CharField(_('Source'), max_length=100, blank=True)def get_absolute_url(self):return reverse('blog:author_detail', kwargs={'author_name': self.username})def __str__(self):return self.username if self.nickname == '' else self.nicknamedef get_full_url(self):site = get_current_site().domainreturn f"https://{site}{self.get_absolute_url()}"class Meta:ordering = ['-id']verbose_name = _('User')verbose_name_plural = _('Users')get_latest_by = 'id'

3. 自定义用户模型详解

3.1 继承 AbstractUser

BlogUser 继承了 Django 内置的 AbstractUser,这意味着该模型默认具备了 Django 用户认证系统的基础功能,比如用户名、密码、邮箱、权限等字段。同时,它还允许我们在此基础上添加自定义字段,如昵称、创建时间、修改时间等,从而满足项目的需求。

3.2 自定义字段

nickname:

  • 这是用户的昵称字段,类型为 CharField,最大长度为 100,允许为空。我们通过 gettext_lazy 使用国际化支持,_('Nickname') 使得该字段的名称可以在不同语言环境下翻译显示。

creation_time:

  • 该字段记录了用户创建的时间。它是一个 DateTimeField,使用了 default=now 来自动记录用户实例创建时的时间。通过 editable=False 参数,我们确保该字段在用户创建后无法被手动修改。

last_modify_time:

  • 这个字段记录了用户信息最后一次修改的时间。通过 auto_now=True,我们确保每次修改用户信息时,该字段都会自动更新为当前时间。这个字段非常适合记录数据的变更时间。

source:

  • 该字段记录了用户的创建来源。它同样是一个可选的字符串字段,最大长度为 100。创建来源可以帮助追踪用户的来源信息,如是通过网站注册、社交媒体登录还是其他方式创建。

3.3 get_absolute_url 方法

get_absolute_url 是 Django 模型中的一个常见方法,用于生成模型实例的绝对 URL。在本例中,我们通过 reverse 函数生成用户详情页的 URL。reverse 根据视图的名称 'blog:author_detail' 及用户的 username,动态生成 URL。

这种动态生成 URL 的方式避免了硬编码路径,不仅提高了代码的灵活性,还能在 URL 结构发生变化时轻松进行维护。

示例

def get_absolute_url(self):return reverse('blog:author_detail', kwargs={'author_name': self.username})

当我们调用 get_absolute_url() 时,Django 会生成该用户的详情页 URL,比如 /author/john/

3.4 __str__ 方法

__str__ 方法定义了模型实例的字符串表示。在管理后台或者在调试时,打印模型实例通常会调用此方法。对于用户模型,使用昵称优先作为显示内容,如果用户没有设置昵称,则返回用户名。

示例

def __str__(self):return self.username if self.nickname == '' else self.nickname

这样一来,当用户有昵称时会显示昵称,如果没有昵称就显示用户名,确保用户模型的展示个性化。

3.5 get_full_url 方法

get_full_url 方法返回了完整的用户详情页 URL,包括了站点的域名。我们通过 get_current_site 函数获取当前站点的域名,并拼接绝对 URL,生成完整的链接。这在前端显示用户详情页或者生成分享链接时非常有用。

示例

def get_full_url(self):site = get_current_site().domainreturn f"https://{site}{self.get_absolute_url()}"

这个方法生成的 URL 可能是 https://mywebsite.com/author/john/,适合用于页面的完整链接展示。

3.6 Meta 类

Meta 类用于定义模型的元数据。它可以控制模型的行为,比如数据的默认排序方式、模型在管理后台显示的名称等。

  • orderingordering = ['-id'] 表示查询用户时按 ID 降序排列,即最新创建的用户会首先展示。
  • verbose_name 和 verbose_name_plural: 这些字段定义了模型在管理后台的显示名称。在这里,verbose_name = _('User') 和 verbose_name_plural = _('Users') 确保了单数和复数形式的用户名称可以通过国际化翻译。
  • get_latest_by: 通过 get_latest_by,我们定义了在获取最新记录时以哪个字段为依据。在这里,我们使用了 id 字段来获取最新创建的用户。

4. 自定义用户模型的常见场景

在 Web 应用中,用户模型通常是核心的组成部分,而自定义用户模型的需求在很多场景中都会出现。比如:

  • 博客系统:为用户添加昵称、头像、个人简介等自定义字段,用于展示用户信息。
  • 电商平台:可能需要扩展用户模型以记录用户的地址、购物习惯、订单历史等信息。
  • 社交平台:需要记录用户的注册来源、关注列表、好友等数据。

自定义用户模型为我们提供了极大的灵活性,使得开发者可以根据项目需求灵活调整模型结构。

5. 小结

通过自定义用户模型,Django 提供了强大的扩展能力,使得开发者可以在默认用户模型的基础上添加任意需要的字段和功能。本文详细解读了一个自定义用户模型 BlogUser,展示了如何为用户添加昵称、创建时间、修改时间等字段,并通过 get_absolute_url 和 get_full_url 实现动态 URL 生成。无论是小型网站还是大型系统,自定义用户模型都能极大地满足不同的业务需求,并提升系统的灵活性和可扩展性。


这篇博客专注于 Django 自定义用户模型的讲解,介绍了具体实现和常见的使用场景。

http://www.tj-hxxt.cn/news/43554.html

相关文章:

  • 惠州开发做商城网站建设哪家好网络整合营销4i原则是指
  • javascript代码大全沈阳网络seo公司
  • 汉中市建设工程招投标交易中心seo顾问多少钱
  • 网站开发合同最近热点新闻事件
  • 做国外市场哪个网站好百度站长工具综合查询
  • 网站标题字体大小总推荐榜总点击榜总排行榜
  • 全面的聊城网站建设seo研究中心道一老师
  • 临沂网站设计价格seo 首页
  • 外贸网站定制画质优化app下载
  • 国务院网站工程建设审批制度改革站长之家seo概况查询
  • cms建站系统是什么杭州网络推广公司
  • wordpress 缺少样式表海淀搜索引擎优化seo
  • 网站策划书店铺推广
  • 软件开发培训机构费用武汉seo排名优化公司
  • 360做企业网站多少钱网络营销专员的就业前景
  • 学做网站知识抖音关键词搜索排名
  • ios网站开发教程在线搭建网站
  • 建设充值网站多钱免费个人网站服务器
  • 福建建设厅官网seo快排技术教程
  • 美女图片网站源码广点通广告投放平台登录
  • 做网站要开发嘛最有效的100个营销方法
  • ip地址或域名查询seo搜索优化软件
  • 郑州网站推广排名公司谷歌排名网站优化
  • 长兴做网站seo准
  • 哪个新闻网站做代理竞价推广开户多少钱
  • 如何下载网页在线视频朝阳网站seo
  • 网站的icp 备案信息爱站网ip反查域名
  • 在哪个网站可以做任务赚钱的百度推广的方式有哪些
  • 什么是境外电商?seo软件系统
  • 重庆网站建设维护站长工具网