Django博客系统(用户中心展示)
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博客系统(用户中心展示)相关推荐
- Django博客系统(用户中心修改)
1. 用户中心接口设计 1.请求方式 选项 方案 请求方法 POST 请求地址 /center/ 2.请求参数:表单 参数名 类型 是否必传 说明 username string 否 用户名 avat ...
- Django博客系统(详情页面展示)
1. 页面展示 1.在home.views.py文件中定义视图 from django.views import Viewclass DetailView(View):def get(self,req ...
- Django博客系统(首页用户名展示)
1. 用户名写入到cookie # 响应登录结果 response = redirect(reverse('home:index'))# 设置状态保持的周期 if remember != 'on':# ...
- Django博客系统(404页面展示)
1. 修改查询不到数据返回的响应 1.在home.views.py文件中定义视图 try:article=Article.objects.get(id=id) except Article.DoesN ...
- 黑马博客——详细步骤(十一)博客系统的前台展示页面
7.博客系统的前台展示页面:首页+文章详情页面 改后缀为.art 改模板文件中的相对路径为绝对路径 验证首页和文章详情页没有问题 default.art 和 article.art 出口body和cs ...
- 一个前端写的php博客系统2--前台展示+后台登录
前台首页展示 首页的侧边预留的位置是给后面的统计,热门之类的版块预留位置... 控制器 文章列表展示要考虑到文章数量增多后分页展示,那么我们要统计文章数量,使用 count() 计算文章总数,然后使用 ...
- Django博客系统注册(定义用户模型类)
1. Django默认用户认证系统 Django自带用户认证系统 它处理用户账号.组.权限以及基于cookie的用户会话. Django认证系统位置 django.contrib.auth包含认证框架 ...
- Django博客系统(详情评论数据展示)
1. 查询评论数据并展示 1.查询评论数据并通过context传递给HTML from home.models import Comment from django.shortcuts import ...
- Django博客系统(首页文章数据展示)
1. 查询分页数据并展示 1.查询分类文章数据并通过context传递给HTML from home.models import ArticleCategory,Article from django ...
最新文章
- art-template-loader:template
- 学妹问我:怎么从网页下载所有图片?我答:天机不可泄露
- 上传数据时 ajax请求成功 上传完成,ajaxSubmit请求返回数据成功,但是不执行success回调函数...
- ffmpeg与ffserver的协同工作
- html 使用ajax php函数吗,php – 为什么用AJAX加载html后jQuery更改函数不起作用?
- @synchronized (object)使用详解
- 织梦cms响应式影视传媒模板
- Logisim元件用法详解五:Memory 储存库
- 微型计算机系统性能优化及测试,第八章 微型计算机系统的测试、优化和升级.doc...
- 十大免费DNS域名解析服务-稳定,可靠,好用的免费DNS服务
- 几点关于STM32CubeProgrammer的内容
- 谷歌负载均衡Maglev实现简析
- ImageNet数据集 下载
- python 二值化细化_Python OpenCV图像细化
- PMP项目管理适用于哪些行业?
- 取消职称英语计算机考试的文件,2010年有没有可能取消职称英语及计算机考试...
- 别让拖延毁掉你自己 | 《拖延心理学》全书解读
- CSS -- CSS字体样式、文本样式、去掉列表的小圆点、背景、背景渐变
- python中if条件语句的代码实例
- 智慧楼宇篇 7 —— BIM,今后一定是趋势
热门文章
- AI化身监工,上班还能摸鱼吗?
- 无需训练RNN或生成模型,我写了一个AI来讲故事
- 64% 的企业未实现智能化,5成公司算法工程师团队规模小于 10人,AI 工程师的机遇在哪里?...
- 资源 | 2018年14个顶级AI和机器学习会议名录
- AI一分钟|腾讯AI绝艺让二子,仍战胜柯洁;Google与腾讯达成专利交叉授权许可协议
- Redis解决websocket在分布式场景下session共享问题
- MyBatis 三种批量插入方式的比较,我推荐第3个!
- JAVA 线上故障排查完整套路,从 CPU、磁盘、内存、网络、GC 一条龙!
- 总在说SpringBoot内置了tomcat启动,那它的原理你说的清楚吗?
- 『并发包入坑指北』之阻塞队列