Django开发个人网站——个人信息管理和头像上传操作

本文介绍了如何在Django中实现个人信息编辑和头像上传功能。详细讲解了数据模型设计、视图处理、模板创建以及图像处理插件ImgCrop的使用,包括图片上传、数据库存储及前端展示的全过程。

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

用户信息修改与头像上传

知识要点:管理个人信息,头像上传与裁剪

上期文章:密码修改与操作

B站视频:Django开发个人网站

个人信息编辑

个人信息修改页面

我们在进行任何操作时,只要涉及到数据部分,都需要设计数据库,现在让我们先看一看我们的设计的个人信息数据模型。

class UserProfile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    birth = models.CharField(max_length=100, blank= True, default="konw")
    phone = models.CharField(max_length=100, blank=True)
    school = models.CharField(max_length=100, blank=True)
    company = models.CharField(max_length=100, blank=True)
    profession = models.CharField(max_length=100, blank=True)
    address = models.CharField(max_length=100, blank=True)
    about = models.TextField(blank=True)
    photo = models.ImageField(blank=True)

    def __str__(self):
        return 'user:{}'.format(self.user.username)

我们对个人信息添加了一些内容,这些内容包括 school,company,profession,address,about,photo,当然别忘了在表单中添加它们。

class UserProfileForm(forms.ModelForm):
    class Meta:
        model = UserProfile
        fields = ('user', 'birth', 'phone', 'school', 'company', 'profession', 'address', 'about','photo')

下面就是对数据的操作处理部分了,编辑views.py

首先是个人信息的展示部分,编写infor_show函数:

@login_required(login_url='/account/login/')
def infor_show(request):
    userinfo = UserProfile.objects.get(user=request.user)
    return render(request,"account/infor_show.html",{
   'userinfo':userinfo})

这个函数很简单,就是将从数据库中去得到个人信息数据返回给前端。

根据views.py,我们需要编写一个infor_show.html页面:

{% extends "base.html" %}
{% load static %}
{% block title %}我的信息{% endblock %}
{% block content %}
    <div class="row text-center">
    <h1>我的资料</h1>
    <div class="col-md-6">
        <div class="row">
        <div class="col-md-3 text-right">
            <span>用户名:</span>
        </div>
        <div class="col-md-9 text-left">
            {
  { userinfo.user.username }}
        </div>
        </div>
        <div class="row">
            <div class="col-md-3 text-right">
                <span>出生日期:</span>
            </div>
            <div class="col-md-9 text-left">
                {
  { userinfo.birth }}
            </div>
        </div>
        <div class="row">
            <div class="col-md-3 text-right">
                <span>联系方式:</span>
            </div>
            <div class="col-md-9 text-left">
                {
  { userinfo.phone }}
            </div>
        </div>
        <div class="row">
            <div class="col-md-3 text-right">
                <span>学校:</span>
            </div>
            <div class="col-md-9 text-left">
                {
  { userinfo.school }}
            </div>
        </div>
        <div class="row">
            <div class="col-md-3 text-right">
                <span>公司:</span>
            </div>
            <div class="col-md-9 text-left">
                {
  { userinfo.company }}
            </div>
        </div>
        <div class="row">
            <div class="col-md-3 text-right">
                <span>地址:</span>
            </div>
            <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值