个人网站搭建(Day 2)— My first app:users

本文介绍了如何在Django中创建并设计users应用,包括创建app、设计包含UserInfo和Message模型的数据库结构,以及views和urls的配置。users app用于扩展用户功能,与Django默认User模型交互,提供用户信息管理、消息通信等核心功能。

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

我们的网站需要提供用户功能,但是又由于Django自带的用户User功能过于简单,因此我们创建 users app 来扩展用户信息以及功能。

 

创建app

我们使用 python3 manage.py startapp users 来创建app

之后需要注意的几个点有

1)将我们创建的app添加到 schnee/settings.py 的 INSTALLED_APPS 中。

2)将我们的app的 urls 包含到 schnee/urls.py 中,如下:

from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    path('admin/', admin.site.urls),
    path('users/', include('users.urls', namespace = 'users')),
]

 

app设计

我们在 users app中创建有两个 model, 分别是 UserInfo(扩展用户信息),Message(用于用户间通信以及接收通知)

models.py 中为users 的模型,分别为 用户信息(UserInfo),消息(Message)

UseInfo中的基本属性有 user(一对一关联Django的User), nickname, gender, intro, email, profile(头像)

class UserInfo(models.Model):
    GENDER_CHOICES = (
        (u'M', u'Male'),
        (u'F', u'Female'),
    )
    user = models.OneToOneField(User, on_delete = models.CASCADE, related_name="user")
    nickname = models.CharField(max_length=20, default="Undefined")
    gender = models.CharField(max_length=6, choices=GENDER_CHOICES, default="Male")
    intro = models.CharField(max_length=200, default="hello world")
    email = models.EmailField(max_length=70, blank=True, default="Undefined@example.com")
    # 用户头像使用 imagekit 库来处理头像,包括进行图像压缩,转码等等
    profile = ProcessedImageField(upload_to='user/img', default='user/img/default.jpg', 
    processors=[ResizeToFill(500, 500)],  format='JPEG', options={'quality': 60})
    
    def __str__(self):
        return self.nickname

 Message中基本属性有 sender,text, date_added,receiver(外键关联User), is_Read,sender_del,receiver_del (标记是否被发送者以及收信人删除,若均为True则删除该信息)

class Message(models.Model):
    sender = models.CharField(max_length=20)
    text = models.CharField(max_length=2000)
    date_added = models.DateTimeField(auto_now_add=True)
    receiver = models.ForeignKey(User, on_delete=models.CASCADE)
    is_Read = models.BooleanField(default=False)
    sender_del = models.BooleanField(default=False)
    receiver_del = models.BooleanField(default=False)
    
    def __str__(self):
        return self.text

完成模型的设计后我们要转到 users/admin.py, 对我们的模型进行注册,这样我们就能够在后台对模型进行管理,除此之外,我们还能够自定义后台能够操作的数据,这个是之后的事情啦。示例代码:

from django.contrib import admin
from users.models import UserInfo, Message

admin.site.register(UserInfo)
admin.site.register(Message)

 

 views.py主要提供了登陆,登出,注册的功能,还有就是消息发送,接受信息的功能。

urls.py 规定了链接的url,基础的功能的url如下所示

from django.urls import path

from users import views

#在Django2.0 以上版本中,没有app_name会出错
app_name = 'users'

urlpatterns = [
    # 基础功能
    path('login/', views.login_view, name = 'login'),

    path('logout/', views.logout_view, name = 'logout'),

    path('register/', views.register, name = 'register'),

    path('notice/', views.notice, name = 'notice'),

    path('settings/', views.settings, name = 'settings'),

    path('reset_password/', views.reset_password, name = 'reset_password'),

    path('reset_done/', views.reset_done, name = 'reset_done'),
]

 

数据库相关操作

每次添加新的模型,以及对模型进行修改之后都需要执行下面两条命令以更新数据库

python3 manage.py makemigrations
python3 manage.py migrate

users 这个app对于整个网站至关重要,很多功能都需要关系到用户权限,因此我们先在这里讲一下users app的设计。之后随着用户功能的扩展,会为模型添加更多的属性,以及在views.py中实现更多的方法,之后的博文中会详细说明。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值