- 登录验证问题
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("请不要重复扫描")
// }
});