全部
常见问题
产品动态
精选推荐

自关联,authlogin

管理 管理 编辑 删除

自关联

- 自关联
			- 多对多关联
				
				models.py:
					#### 自关联
					class User(models.Model):
						name = models.CharField(max_length=32)
						gender_list = [
							(1,'男'),
							(2,'女')
						]
						gender = models.IntegerField(choices=gender_list, default=1)
						m = models.ManyToManyField('User')
				
				views.py:
					#### 查询和zekai约会的姑娘
					res = models.User.objects.filter(name='zekai', gender=1).first()
					#print(res) ### obj
					objs = res.m.all()
					'''
					   1. select * from app01_user_m where  from_user_id = 1  ### to_user_id=[3,4]
					   2. select * from app01_user where id in (3,4)
					'''
					for obj in objs:
						print(obj.name)

					#### 查询和cuihua约会的男生
					res = models.User.objects.filter(name='cuihua', gender=2).first()
					objs = res.user_set.all()
					'''
						1. select * from app01_user_m where  to_user_id = 3  ### from_user_id=[1,2]
						2. select * from app01_user where id in (1,2) 
					'''
					for obj in objs:
						print(obj.name)
			

authlogin

数据是在auth_user里面
创建用户方式 是在 tool工具createsuperuser ,数据自动存放到auth_user
除了这种创建方式之外,还有个方法:
    from django.contrib.auth.models import User
    def register(request):
        if request.method=='GET':
            return render(request,'register.html')
       	else:
            username=request.POST.get('username')
             password=request.POST.get('password')
         User.objects.create_superuser(username=username,password=password,email='[email protected]')
       # User.objects.create_user()
        
        return HttpResponser('ok')
   
另外还有修改密码的方法
def modify(request):
    if request.method=='GEt':
        return render(request,'modify.html')
    else:
        old_pwd =request.POST.get('oldboy')
        new_pwd=request.POST.get('newpwd')
        res =request.user.check_password(oldboy)
        
        if res:
            reques.user.set_passwod(new_pwd)
            request.user.save()
            return HttpREsponse('ok')
        



from django.contrib import auth
def authlogin(request):
    if request.meth=='GET':
        return render(request,"authlogin.html")
else:
    username=request.POST.get('username')
    password =request.POST.get('password')
    
    myuser =auth.authenticate(request,username=username,password=password)
    print(myuser)#返回的是用户名
    if myuser:
        ###设置session 和cookie
        #request.session['name']=username    session可以做
        auth.login(request,myuser)  #调用成功会产生一个user对象,这个对象可以在任意的视图函数中调用
        #自动设置session  存放在django_session
        return Httpresponse('ok')
    else:
        return render(request,'authlogin.html')
    

    
    两种验证方式###
1.提供了一个验证装饰器 
from django.contrib.auth.decorators import login_requires
@login_requires(login_url='/authlogin/')
def tesst1(request):
    return HttpResponse('ok')
 
2.
#任意调用这个user,可以通过调用user.is_authenticated判断用户是否登录
def test(request):
    if  request.user.is_authenticated:
        #业务逻辑处理函数
        return Httpresponse('ok')
    else:
        return render(requst,'authlogin.html')
    
    
    


若要所有的视图函数都要装饰并跳转到login页面,那我需要写好几份

在配置文件中指定auth校验登录登陆不合法同意跳转某个路径

LOGIN_URl='/login/' 即可以局部设置,也可以全局配置

原文链接: https://www.cnblogs.com/zhuyuanying123--/p/11375141.html

请登录后查看

CRMEB-慕白寒窗雪 最后编辑于2023-02-24 16:10:11

快捷回复
回复
回复
回复({{post_count}}) {{!is_user ? '我的回复' :'全部回复'}}
排序 默认正序 回复倒序 点赞倒序

{{item.user_info.nickname ? item.user_info.nickname : item.user_name}} LV.{{ item.user_info.bbs_level || item.bbs_level }}

作者 管理员 企业

{{item.floor}}# 同步到gitee 已同步到gitee {{item.is_suggest == 1? '取消推荐': '推荐'}}
{{item.is_suggest == 1? '取消推荐': '推荐'}}
沙发 板凳 地板 {{item.floor}}#
{{item.user_info.title || '暂无简介'}}
附件

{{itemf.name}}

{{item.created_at}}  {{item.ip_address}}
打赏
已打赏¥{{item.reward_price}}
{{item.like_count}}
{{item.showReply ? '取消回复' : '回复'}}
删除
回复
回复

{{itemc.user_info.nickname}}

{{itemc.user_name}}

回复 {{itemc.comment_user_info.nickname}}

附件

{{itemf.name}}

{{itemc.created_at}}
打赏
已打赏¥{{itemc.reward_price}}
{{itemc.like_count}}
{{itemc.showReply ? '取消回复' : '回复'}}
删除
回复
回复
查看更多
打赏
已打赏¥{{reward_price}}
963
{{like_count}}
{{collect_count}}
添加回复 ({{post_count}})

相关推荐

快速安全登录

使用微信扫码登录
{{item.label}} 加精
{{item.label}} {{item.label}} 板块推荐 常见问题 产品动态 精选推荐 首页头条 首页动态 首页推荐
取 消 确 定
回复
回复
问题:
问题自动获取的帖子内容,不准确时需要手动修改. [获取答案]
答案:
提交
bug 需求 取 消 确 定
打赏金额
当前余额:¥{{rewardUserInfo.reward_price}}
{{item.price}}元
请输入 0.1-{{reward_max_price}} 范围内的数值
打赏成功
¥{{price}}
完成 确认打赏

微信登录/注册

切换手机号登录

{{ bind_phone ? '绑定手机' : '手机登录'}}

{{codeText}}
切换微信登录/注册
暂不绑定
CRMEB客服

CRMEB咨询热线 咨询热线

400-8888-794

微信扫码咨询

CRMEB开源商城下载 源码下载 CRMEB帮助文档 帮助文档
返回顶部 返回顶部
CRMEB客服