设为首页 收藏本站
查看: 549|回复: 1

三、BBS首页搭建、admin后台管理、暴露上传文件

[复制链接]
累计签到:528 天
连续签到:1 天
发表于 2022-11-7 00:31:37 | 显示全部楼层 |阅读模式
首页搭建
1、动态展示用户名称{% if request.user.is_authenticated %}
      <li><a href="#">{{ request.user.username }}</a></li>
      <li class="dropdown">{% else %}
    <li><a href="{% url 'login' %}">登录</a></li>   反向解析跳转
   <li><a href="{% url 'reg' %}">注册</a></li>      反向解析跳转
{% endif %}
2、更多操做①修改密码前端HTML及JS发送ajax请求<li><a href="#" data-toggle="modal" data-target=".bs-example-modal-lg">修改密码</a></li><div class="modal fade bs-example-modal-lg" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel">
  <div class="modal-dialog modal-lg" role="document">
    <div class="modal-content">
    <h1 class="text-center">修改密码</h1>
      <div class="row">
          <div class="col-md-8 col-md-offset-2">
              <div class="form-group">
                  <label for="">用户名</label>
                  <input type="text" disabled value="{{ request.user.username }}" class="form-control">
              </div>
              <div class="form-group">
                  <label for="">原密码</label>
                  <input type="password" id="id_old_password" class="form-control"> {# 这里不写那么的原因是用ajax提交的,如果是form表单提交数据就要写name后端才能获取到值 #}
              </div>
              <div class="form-group">
                  <label for="">新密码</label>
                  <input type="password" id="id_new_password" class="form-control">
              </div>
              <div class="form-group">
                  <label for="">确认密码</label>
                  <input type="password" id="id_confirm_password" class="form-control">
              </div>
              <div class="modal-footer">
              <button type="button" class="btn btn-default" data-dismiss="modal" style="margin-bottom: 10px"  >取消</button>
              <button class="btn btn-primary " style="margin-bottom: 10px" id="id_edit">修改</button>
                  <span style="color: red" id="password_error"></span>
              </div>
          </div>
      </div>
    </div>
  </div>
</div><script>
    $('#id_edit').click(function (){
        $.ajax({
            url:'/set_password/',
            type:'post',
            data:{
                'old_password':$('#id_old_password').val(),
                'new_password':$('#id_new_password').val(),
                'confirm_password':$('#id_confirm_password').val(),
                'csrfmiddlewaretoken':'{{ csrf_token }}'
            },
            success:function (args){
                if(args.code=1000){
                    window.location.reload // 可以点href跳转也可以reload刷新页面
                }else{
                    $('#password_error').text(args.msg)
                }
            }
        })
    })
</script>
后端数据处理from django.contrib import auth配置文件settings中 LOGIN_URL = '/login/'@login_required
def set_password(request):
    if request.is_ajax(): # ajax只用来处理修改密码
        back_dic = {'code':1000,'msg':''} # ajax一定要设置一个字典返回给前端
        if request.method == 'POST':
            old_password = request.POST.get('old_password')
            new_password = request.POST.get('new_password')
            confirm_password = request.POST.get('confirm_password')
            is_right = request.user.check_password(old_password)
            if is_right:
                if new_password == confirm_password:
                    request.user.set_password(new_password)
                    request.user.save()
                    back_dic['msg']='修改成功'
                else:
                    back_dic['code']=1001
                    back_dic['msg']='两次密码不一致'
            else:
                back_dic['code']=1002
                back_dic['msg']='原密码错误'
        return JsonResponse(back_dic)
②退出登录后端代码@login_required
def logout(request):
    auth.logout(request)
    return redirect('/login/')前端代码<li><a href="{% url 'logout' %}">退出登录</a></li> 可以利用反向解析也可以自己写路由
二、搭建首页-后台 管理创建表数据①先在admin.py文件下注册from django.contrib import admin
from app01 import models
admin.site.register(models.UserInfo) # 虽然我们自定义了表名Userinfo,但是在后台管理中我们还是看到是源生的User表注意一下,但是路由匹配操做表还是用Userinfo
admin.site.register(models.Blog)
admin.site.register(models.Tag)
admin.site.register(models.Category)
admin.site.register(models.Article)
admin.site.register(models.UpAndDown)
admin.site.register(models.Comment)
admin.site.register(models.Article2Tag)
②admin管理数据增删改查的原理[关键点在于urls.py自带的[admin会给每一个注册的模型表自动生成增删改查四条url]
http://127.0.0.1:8000/admin/app01/userinfo/  查
http://127.0.0.1:8000/admin/app01/userinfo/add/
http://127.0.0.1:8000/admin/app01/userinfo/5/change/
http://127.0.0.1:8000/admin/app01/userinfo/1/delete/③把所有表的数据的关系绑定好就大功告成了
三、用户头像展示-暴露图片资源1、网站所使用的静态文件默认放在static文件夹下
2、用户上传的静态文件也应该单独放在某个地方存储

media配置
    该配置可以让用户上传的所有文件都固定存放在某一个指定的文件夹下
    MEDIA_ROOT = os.path.join(BASE_DIR,'media') # 文件名随你自己
    会自动开设后端指定文件夹资源

如何开设后端指定的文件夹资源
    1、首先你需要自己去url.py手动书写代码
    2、暴露后端指定文件夹资源
    url(r'^media/(?P<path>.*)',serve,{'document_root':settings.MEDIA_ROOT})这样操作就可以直接访问到该图片的地址的路径了



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-1002647-1-1.html 上篇帖子: 一、BBS项目表搭建、Form表单注册功能 下篇帖子: 二、BBS登录、展示随机验证码
累计签到:528 天
连续签到:1 天
 楼主| 发表于 2022-11-9 23:55:48 | 显示全部楼层

BBS项目media配置用户头像展示

# 暴露后端指定文件夹资源
url(r'^media/(?P<path>.*)',serve,{'document_root':settings.MEDIA_ROOT}), 把代码中的静态文件暴露给用户url(r'^app01/(?P<path>.*)',serve,{'document_root':settings.MEDIA_ROOT}) 源码暴露





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表