1. 页面展示

1.在users.views.py文件中定义视图

from django.views import Viewclass UserCenterView(View):def get(self,request):return render(request,'center.html')

2.在users.urls.py文件中定义路由

from users.views import UserCenterView
urlpatterns = [# 参数1:路由# 参数2:视图函数# 参数3:路由名,方便通过reverse来获取路由path('center/', UserCenterView.as_view(),name='center'),
]

3.修改center.html中的资源加载方式

    <!-- Header部分 -->{% load staticfiles %}<!-- 引入bootstrap的css文件 --><link rel="stylesheet" href="{% static 'bootstrap/css/bootstrap.min.css' %}"><!-- 引入vuejs --><script type="text/javascript" src="{% static 'js/vue-2.5.16.js' %}"></script><script type="text/javascript" src="{% static 'js/axios-0.18.0.min.js' %}"></script>...<!-- Footer部分 --><script type="text/javascript" src="{% static 'js/host.js' %}"></script><script type="text/javascript" src="{% static 'js/common.js' %}"></script><script type="text/javascript" src="{% static 'js/center.js' %}"></script>...<!-- 页面跳转部分 --><a class="dropdown-item" href='{% url 'users:center' %}'>个人信息</a><a class="dropdown-item" href='{% url 'users:logout' %}'>退出登录</a>

4.修改index.html中的的跳转连接

<a class="dropdown-item" href='{% url 'users:center' %}'>个人信息</a>

2. 判断用户是否登录

需求:

  • 当用户登录后,才能访问用户中心。
  • 如果用户未登录,就不允许访问用户中心,将用户引导到登录界面。

实现方案:

  • 需要判断用户是否登录。
  • 根据是否登录的结果,决定用户是否可以访问用户中心。

Django用户认证系统提供了方法

  • request.user.is_authenticated()来判断用户是否登录。如果通过登录验证则返回True。反之,返回False
  • LoginRequiredMixin封装了判断用户是否登录的操作。

1.用户中心使用LoginRequiredMixin

from django.views import View
from django.contrib.auth.mixins import LoginRequiredMixinclass UserCenterView(LoginRequiredMixin,View):def get(self,request):return render(request,'center.html')

2.设置未登录用户跳转的路由

#在工程的settings.py文件中,添加以下配置。
LOGIN_URL = '/login/'

3.根据登录的next参数设置登录跳转路由

# 实现状态保持
login(request, user)# 响应登录结果
next = request.GET.get('next')
if next:response= redirect(next)
else:response =  redirect(reverse('home:index'))

3. 获取用户信息,模板渲染数据

1.获取用户信息修改center.html中的数据显示

from django.contrib.auth.mixins import LoginRequiredMixin
class UserCenterView(LoginRequiredMixin,View):def get(self,request):# 获取用户信息user = request.user#组织模板渲染数据context = {'username': user.username,'mobile': user.mobile,'avatar': user.avatar.url if user.avatar else None,'user_desc': user.user_desc}return render(request,'center.html',context=context)

2.修改center.html中的数据显示

<form method="post" enctype="multipart/form-data"><!-- username --><div class="form-group col-md-4"><label for="username">用户名</label><input type="text" class="form-control" id="username" name="username" value="{{ username }}" ></div>{% if avatar %}<br> <div class="col-md-4">头像</div><img src="{{ avatar }}" style="max-width: 20%; border-radius: 15%;" class="col-md-4"><br>{% else %}<br><h5 class="col-md-4">暂无头像</h5><br>{% endif %}<!-- avatar --><div class="form-group col-md-4"><label for="avatar">上传头像</label><input type="file" class="form-control-file" name="avatar" id="avatar"></div><!-- phone --><div class="form-group col-md-4"><label for="phone">电话</label><input type="text" class="form-control" disabled="disabled" id="phone" name="phone" value="{{ mobile }}"></div><!-- desc --><div class="form-group col-md-4"><label for="desc">简介</label><!-- 文本区域 --><textarea type="text" class="form-control" id="desc" name="desc" rows="12" >{{ user_desc }}</textarea></div><!-- 提交按钮 --><button type="submit" class="btn btn-primary" style="margin-left: 12px" >修改</button>
</form>

Django博客系统(用户中心展示)相关推荐

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

    1. 用户中心接口设计 1.请求方式 选项 方案 请求方法 POST 请求地址 /center/ 2.请求参数:表单 参数名 类型 是否必传 说明 username string 否 用户名 avat ...

  2. Django博客系统(详情页面展示)

    1. 页面展示 1.在home.views.py文件中定义视图 from django.views import Viewclass DetailView(View):def get(self,req ...

  3. Django博客系统(首页用户名展示)

    1. 用户名写入到cookie # 响应登录结果 response = redirect(reverse('home:index'))# 设置状态保持的周期 if remember != 'on':# ...

  4. Django博客系统(404页面展示)

    1. 修改查询不到数据返回的响应 1.在home.views.py文件中定义视图 try:article=Article.objects.get(id=id) except Article.DoesN ...

  5. 黑马博客——详细步骤(十一)博客系统的前台展示页面

    7.博客系统的前台展示页面:首页+文章详情页面 改后缀为.art 改模板文件中的相对路径为绝对路径 验证首页和文章详情页没有问题 default.art 和 article.art 出口body和cs ...

  6. 一个前端写的php博客系统2--前台展示+后台登录

    前台首页展示 首页的侧边预留的位置是给后面的统计,热门之类的版块预留位置... 控制器 文章列表展示要考虑到文章数量增多后分页展示,那么我们要统计文章数量,使用 count() 计算文章总数,然后使用 ...

  7. Django博客系统注册(定义用户模型类)

    1. Django默认用户认证系统 Django自带用户认证系统 它处理用户账号.组.权限以及基于cookie的用户会话. Django认证系统位置 django.contrib.auth包含认证框架 ...

  8. Django博客系统(详情评论数据展示)

    1. 查询评论数据并展示 1.查询评论数据并通过context传递给HTML from home.models import Comment from django.shortcuts import ...

  9. Django博客系统(首页文章数据展示)

    1. 查询分页数据并展示 1.查询分类文章数据并通过context传递给HTML from home.models import ArticleCategory,Article from django ...

最新文章

  1. art-template-loader:template
  2. 学妹问我:怎么从网页下载所有图片?我答:天机不可泄露
  3. 上传数据时 ajax请求成功 上传完成,ajaxSubmit请求返回数据成功,但是不执行success回调函数...
  4. ffmpeg与ffserver的协同工作
  5. html 使用ajax php函数吗,php – 为什么用AJAX加载html后jQuery更改函数不起作用?
  6. @synchronized (object)使用详解
  7. 织梦cms响应式影视传媒模板
  8. Logisim元件用法详解五:Memory 储存库
  9. 微型计算机系统性能优化及测试,第八章 微型计算机系统的测试、优化和升级.doc...
  10. 十大免费DNS域名解析服务-稳定,可靠,好用的免费DNS服务
  11. 几点关于STM32CubeProgrammer的内容
  12. 谷歌负载均衡Maglev实现简析
  13. ImageNet数据集 下载
  14. python 二值化细化_Python OpenCV图像细化
  15. PMP项目管理适用于哪些行业?
  16. 取消职称英语计算机考试的文件,2010年有没有可能取消职称英语及计算机考试...
  17. 别让拖延毁掉你自己 | 《拖延心理学》全书解读
  18. CSS -- CSS字体样式、文本样式、去掉列表的小圆点、背景、背景渐变
  19. python中if条件语句的代码实例
  20. 智慧楼宇篇 7 —— BIM,今后一定是趋势

热门文章

  1. AI化身监工,上班还能摸鱼吗?
  2. 无需训练RNN或生成模型,我写了一个AI来讲故事
  3. 64% 的企业未实现智能化,5成公司算法工程师团队规模小于 10人,AI 工程师的机遇在哪里?...
  4. 资源 | 2018年14个顶级AI和机器学习会议名录
  5. AI一分钟|腾讯AI绝艺让二子,仍战胜柯洁;Google与腾讯达成专利交叉授权许可协议
  6. Redis解决websocket在分布式场景下session共享问题
  7. MyBatis 三种批量插入方式的比较,我推荐第3个!
  8. JAVA 线上故障排查完整套路,从 CPU、磁盘、内存、网络、GC 一条龙!
  9. 总在说SpringBoot内置了tomcat启动,那它的原理你说的清楚吗?
  10. 『并发包入坑指北』之阻塞队列