Django之全局使用request.user.username的實例詳解
我就廢話不多說了,大家還是直接看代碼吧!
def pro_mgr():
"""
獲取當前登陸用戶的項目
:return:
"""
if DEVELOP_USER_NAME == 'admin':
return Project.objects.all()
return Project.objects.filter(prj_mgr=DEVELOP_USER_NAME)
class DeployApplyForm(ModelForm):
# project = forms.ModelChoiceField(queryset=pro_mgr())
bgn_time = forms.DateTimeField(initial=datetime.datetime.now().strftime("%Y-%m-%dT%H:%M:%S"), label=u'開始',
input_formats=['%Y-%m-%dT%H:%M:%S'], widget=forms.DateTimeInput(
attrs={'type': 'datetime-local', 'emptyTips': u'請選擇時間', 'step': '1'}))
end_time = forms.DateTimeField(initial=datetime.datetime.now().strftime("%Y-%m-%dT%H:%M:%S"), label=u'結束',
input_formats=['%Y-%m-%dT%H:%M:%S'], widget=forms.DateTimeInput(
attrs={'type': 'datetime-local', 'emptyTips': u'請選擇時間', 'step': '1'}))
class Meta:
model = DeployApply
fields = '__all__'
def __init__(self, *args, **kwargs):
prj_mgr = kwargs.pop('prj_mgr', '')
super(DeployApplyForm, self).__init__(*args, **kwargs)
if prj_mgr == 'admin':
self.fields['project'] = forms.ModelChoiceField(queryset=Project.objects.all())
else:
self.fields['project'] = forms.ModelChoiceField(queryset=Project.objects.filter(prj_mgr=prj_mgr))
//views.py deployApplyForm = DeployApplyForm(initial=wfContent[0], prefix='deployApply',prj_mgr=request.user.username)
//settings.py # DEVELOP模式下登陸用戶 DEVELOP_USER_NAME = 'admin'
補充知識:Django 中 request.user 調用用戶名時出現 AnonymousUser(匿名對象)的錯誤
說明
已經添加了額外的屬性,現在想通過request.user的方式獲取,打印request.user是一個AnonymousUser對象,無法獲取 user 值!
原因
1. 沒有登錄賬號或者無法登錄成功。
2. 登錄成功但是在登錄代碼中沒有注冊 cookie,導致無法驗證身份!
3. 其它原因。
解決方法
1. 登錄賬號,你也可以試著使用 admin 賬戶登錄后,看看能否解決。
2. 參考以下代碼,在 login 中注冊cookis(大多數是這種情況):
auth_obj = auth.authenticate(request, username=username, password=password) if auth_obj: # 需要auth驗證cookie auth.login(request, auth_obj) ....
3. 換另一種方式重寫 login 。
以上這篇Django之全局使用request.user.username的實例詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
創(chuàng)建pycharm的自定義python模板方法
今天小編就為大家分享一篇創(chuàng)建pycharm的自定義python模板方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05

