django-项目开发笔记. 开发版本号1.11.8[pip3 install django==1.11.8] +layer使用

  1. 登录验证问题
    1.1 使用django自带的登录验证功能
    我这里对比的是是django库中的,auth_user的表;
    post发送过来的账号密码对比;
#导入验证的模块
from django.contrib.auth import authenticate,logout,login
def login(request):
	username=request.POST['username']
	password=request.POST['pwd']
	user=authenticate(username=username,password=password)
	if user is not None:
		print("登录成功!")
		# 记录登录成功的状态
		login(request,user)
	else:
		print("登录失败!")
1.2 在views.py中,获取已登录状态的username
def *_views(request):
	show_name=request.user.username
1.3 使用django自带的重定向,未登录则跳转至登录页
#导入模块,装饰器使用
from django.contrib.auth.decorators import login_required
@login_required()
def index_views(request):
	return render(request,'index.html',locals())

1.4 后台想前端传送html文本,前端只显示源码怎么办

def test(requets):
	....
	message="<div>每天跑步</div>"
	return render(request,'Notice_show.html',locals())

#前端显示
# 需要增加 |safe才行
span style="background-color:rgba(255,255,255,0)">{{ message |safe}}</span>

1.5 ajax调用的坑

// 无法正常返回 true/false,得到的数据确实undefined
// 原因如下,ajax是一个方法,也就是下面函数notice_delete方法中的方法
// notice_delete无法在获取ajax的return 值
// 解决办法是 现在ajax中定义记录一个值,然后在ajax外部,notice_delete内部 return ajax内部定义的值,即可
// 网上有建议关闭ajax的异步,解释:异步,有时候网络延迟之类,会仍未返回对应值,我们获取的话会得到undefined[这行有待验证]
// 函数示例,删除请求
function notice_delete(msg_id){
    $.ajax({
    			// 删除接口api
                url: '/index/notice_del',
                type: 'GET',
                // headers:{"X-CSRFToken":$.cookie('csrftoken')},
                data: {
                    //删除对象的表示
                    msg_id: msg_id,
                },
                success: function (data) {
                    // alert(data['status'])
                    // 登录失败!函数
                    if (data['status'] == 1) {
                        layer.msg("删除失败!")
                        rs= false
                    }else if(data.status==2){
                        window.location.reload()
                        layer.msg("您无权限删除!")
                        rs =  false
                    }
                    else {
                        //登录成功!跳转到相应主页
                        console.log("删除成功!")
                        // window.location.reload()
                        rs= true
                    }
                }
            })
    return rs
}

1.6 无法修改数据中的外键?

# 是无法直接修改的
# 例如Notic_table表中的关联字段的deparment_type,关联表deparment的字段id
# 我们是无法直接写入关联字段的,需要在deparment中查询一遍才能写入,否则会报错
msg_show_type=request.GET.get("msg_show_type")
# Deparment_table是表deparment在models.py的类名
part_id = Department_table.objects.get(id=msg_show_type)
# Notice_message是表Notic_table在models.py中的类名
Notice_message.objects.filter(id=msg_id).update(type_id=msg_type,...,show_type_id=part_id)
# 这样子才能更新外键字段,写入也是

1.7 ORM中models的表在adimin注册,打开表格报错

#models.py
class Notice_message(models.Model):
    ...
    type= models.ForeignKey(to="typeOfNotice",to_field="name")
    message=models.TextField(verbose_name="通知内容")
    def __str__(self):
        return self.type
#admin.py
admin.site.register(Notic_message)

#admin界面中,打开这个表格管理
#页面报错
#选择return self.type外键报错,重新选择其他非外键即可

layer部分[js]点击这==>>官方文档

layer.confirm('真的删除行么', function(index){
    //确认框,点击确认继续执行
    alert("开心跑步每一天")
});

// 关闭当前弹出层
var index = parent.layer.getFrameIndex(window.name); //获取窗口索引
parent.layer.close(index);

// 小提示
layer.msg("小弹窗口显示消息")

项目踩坑记录
1.文字提交报错?数据包超过uwsgi设置大小
在uwsgi_django.ini文件中增加

buffer-size = 65536
退出保存重启即可

echarts的问题贴
轴参数过多怎么办

如何防止js方法重复点击

function test(){}


var isClick = true;
$('#mac_input').bind('keyup', function(event) {
     if(isClick) {
		isClick = false;
		if (event.keyCode == '13') {
         //处理按回车键后的逻
             test()
         }
		setTimeout(function() {
			isClick = true;
		}, 1000);  // 一秒内禁止重复执行
     }
     // else{
     //    layer.msg("请不要重复扫描")
     // }
 });
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值