博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Django页面跳转但是不会显示出来???
阅读量:6973 次
发布时间:2019-06-27

本文共 2593 字,大约阅读时间需要 8 分钟。

一脸懵逼,点击登录,如果错了会有提示,但是登录成功了后台会显示跳转到dashboard上,也能正常获取到cookie,但是就是页面不会变化,单独访问dashboard也是正常的。

问题代码如下:

# login   class Login(View):    '''    用户登录    '''    def get(self, request):        return render(request, 'website/signin.html')    def post(self, request):        res = {'status': 'succ'}        user_name = request.POST.get("name", None)        password = request.POST.get("password", None)        u = models.WebsiteUserinfo.objects.filter(username=user_name).first()        if not u:            res['status'] = '用户名错误'        else:            if password == u.password:                # re = render(request,'website/dashboard.html')                re = redirect('/oa/dashboard')                re.set_cookie('is_log', True)  # 设置cookie                re.set_cookie('username', user_name)                return re            else:                res['status'] = '密码错误'        return HttpResponse(json.dumps(res), content_type="application/json")#  dashboardclass Dashboard(View):    '''    主页    '''    def get(self, request):        print(request.COOKIES['username'])        return render(request, '../templates/website/dashboard.html', {'auth': '1234'})#  路由配置from django.conf.urls import url,includefrom django.contrib import adminfrom website import viewsurlpatterns = [    url(r'^admin/', admin.site.urls),    url(r'^$',views.init),    url(r'^oa/', include('website.urls')),]from django.conf.urls import urlfrom website import viewsurlpatterns = [    url(r'^dashboard', views.Dashboard.as_view()),    url(r'^realtime_table', views.RealTimeTable.as_view()),    url(r'^everyday_table', views.EveryDayTable.as_view()),    url(r'^login', views.Login.as_view()),]

后台输出:

 

解决问题:

注意力一直放在后台上了,之前是通过session保存用户状态的,现在需要改为cookie验证,如果要设置cookie返回类型必须为render,redirect,因此就将原来登录成功返回json改为了redirect,但是没有想到的是前端是通过Ajax发送消息的,无法识别返回类型,就导致了登录成功了却没有反应。总结来说是一个很、非常、超级低端的问题,只怪自己想当然的修改。

还是返回json格式,让js去设置cookie

function login() {        $.ajax({            type: "POST",//方法类型            dataType: "json",//预期服务器返回的数据类型            url: "/oa/login",//url            data: $('#login_form').serialize(),            success: function (data) {                if (data['status'] != "succ"){                    alert(data['status']);                }                if (data['status'] == "succ"){                    var name = document.getElementById('u1').value;                    document.cookie="is_log=True;";                    document.cookie="username="+name;                    window.location.href='/oa/dashboard';                }            }        });    }

 

转载于:https://www.cnblogs.com/FanMLei/p/10501011.html

你可能感兴趣的文章
脱敏小软件
查看>>
Android 在Android代码中执行命令行
查看>>
修改VirtualBox虚拟机默认存储路径及虚拟机迁移方法
查看>>
hdu 3440 House Man
查看>>
Error && MFC
查看>>
深入理解Servlet3.0异步请求
查看>>
Lua C API 遍历 table
查看>>
Harbor镜像迁移
查看>>
实验六 在应用程序中播放音频和视频
查看>>
数组A - 财务管理
查看>>
linux getch()实现
查看>>
[宽度优先搜索] FZU-2150 Fire Game
查看>>
group by
查看>>
简单投票系统学到的一些东西
查看>>
简明 Vim 练级攻略(转载)
查看>>
ubuntu12.04下virtualbox访问usb
查看>>
android打电话,接电话,挂电话过程
查看>>
【LeanEAP.NET】精益企业应用平台实战----表格批量编辑与Undo/Redo功能实现
查看>>
从Excel中读取数据(python-xlrd)
查看>>
iframe显示高度自适应 兼容多浏览器
查看>>