Django博客系统(用户中心修改)

1. 用户中心接口设计

1.请求方式

选项 方案
请求方法 POST
请求地址 /center/

2.请求参数:表单

参数名 类型 是否必传 说明
username string 用户名
avatar file 头像
desc string 个人简介

3.响应结果:HTML

字段 说明
修改失败 响应错误提示
修改成功 刷新展示

2. 用户中心修改接口实现

from django.contrib.auth.mixins import LoginRequiredMixin
class UserCenterView(LoginRequiredMixin,View):

    def post(self,request):
        # 接收数据
        user = request.user
        avatar = request.FILES.get('avatar')
        username = request.POST.get('username',user.username)
        user_desc = request.POST.get('desc',user.user_desc)

        # 修改数据库数据
        try:
            user.username=username
            user.user_desc=user_desc
            if avatar:
                user.avatar=avatar
            user.save()
        except Exception as e:
            logger.error(e)
            return HttpResponseBadRequest('更新失败,请稍后再试')

        # 返回响应,刷新页面
        response = redirect(reverse('users:center'))
        #更新cookie信息
        response.set_cookie('username',user.username,max_age=30*24*3600)
        return response

3. 用户中心头像的上传和展示

1.在settings.py文件中设置图片上传的路径并新建文件夹media

MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')

Django博客系统(用户中心修改)

 2.重新上传之后发现无法访问

Django博客系统(用户中心修改)

Django博客系统(用户中心修改)

解决方案:

第一步:设置图片的统一url都以media开头。在settings.py文件中设置

# 图片的统一路由
MEDIA_URL = '/media/'

第二步:设置路由匹配规则。在工程的urls.py文件中设置

from django.contrib import admin
from django.urls import path,include

urlpatterns = [
    path('admin/', admin.site.urls),
    # include 参数1要设置为元组(urlconf_module, app_name)
    # namespace 设置命名空间
    path('', include(('users.urls', 'users'), namespace='users')),
    path('', include(('home.urls','home'),namespace='home')),
]
#以下代码为设置图片访问路由规则
from django.conf import settings
from django.conf.urls.static import static
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
上一篇:mysql sql优化 & 事务处理特征 & 约束添加、删除


下一篇:MySQL:先进行子查询排序再group by,但排序失效问题的解决办法