在Django中,我如何知道當前登錄的用戶?在Django中,我如何知道當前登錄的用戶?
回答
您需要知道用戶的位置?
views用戶在請求中被提供爲request.user
。
對於用戶在處理模板看到here
如果你想節省模型的實例的創建者或編輯,你可以這樣做:
model.py
class Article(models.Model):
created_by = models.ForeignKey(User, related_name='created_by')
created_on = models.DateTimeField(auto_now_add = True)
edited_by = models.ForeignKey(User, related_name='edited_by')
edited_on = models.DateTimeField(auto_now = True)
published = models.BooleanField(default=None)
admin.py
class ArticleAdmin(admin.ModelAdmin):
fields= ('title','slug','text','category','published')
inlines = [ImagesInline]
def save_model(self, request, obj, form, change):
instance = form.save(commit=False)
if not hasattr(instance,'created_by'):
instance.created_by = request.user
instance.edited_by = request.user
instance.save()
form.save_m2m()
return instance
def save_formset(self, request, form, formset, change):
def set_user(instance):
if not instance.created_by:
instance.created_by = request.user
instance.edited_by = request.user
instance.save()
if formset.model == Article:
instances = formset.save(commit=False)
map(set_user, instances)
formset.save_m2m()
return instances
else:
return formset.save()
我發現這個在互聯網上,但我不知道在哪裏了
只需注意,在save_formset - > set_user中,應該是如果不是hasattr(instance,'created_by') – FurtiveFelon 2010-06-15 19:56:01
我可以在settings.py中獲取當前用戶嗎? – Mahendra 2016-03-18 13:37:05
你爲什麼要那樣做? (請創建一個新的問題,我的Django的日子早已消失) – vikingosegundo 2016-03-18 14:11:47
擴展@ vikingosegundo的答案,如果你想獲得內部模型的用戶名,我發現涉及聲明中間件的方式。創建一個名爲get_username.py
應用內的文件,與此內容:
from threading import current_thread
_requests = {}
def get_username():
t = current_thread()
if t not in _requests:
return None
return _requests[t]
class RequestMiddleware(object):
def process_request(self, request):
_requests[current_thread()] = request
編輯您的settings.py
,並把它添加到MIDDLEWARE_CLASSES
:現在
MIDDLEWARE_CLASSES = (
...
'yourapp.get_username.RequestMiddleware',
)
,在你save()
方法,就可以得到當前用戶名像這樣:
from get_username import get_username
...
def save(self, *args, **kwargs):
req = get_username()
print "Your username is: %s" % (req.user)
專用線程:http://stackoverflow.com/questions/10991460/django-get-current-user-in-model-save – 2016-05-09 08:03:08
@nKn是真正專用的Middleware需要在'Models'對象中調用'get_username()'?如果是這樣,那麼有一個關於這個規範文檔的鏈接會很好。是否更新了1.9.5中的原生django函數? – alvas 2016-05-30 07:25:40
的Django 1.9.6默認的項目有在默認模板
0所以你可以寫東西,這個直接,如:
{% if user.is_authenticated %}
{{ user.username }}
{% else %}
Not logged in.
{% endif %}
此功能是通過django.contrib.auth.context_processors.auth
背景處理器在settings.py
提供。
- 1. Google/Facebook聊天如何知道當前登錄的用戶?
- 2. 如何知道是否在Django中登錄了特定用戶而不是當前請求用戶?
- 3. 知道當前登錄用戶的Facebook的ID
- 4. 如何知道在我的登錄
- 5. 如何知道用戶登錄
- 6. 在mac中通過shell腳本知道當前登錄的用戶的語言
- 7. 如何將當前登錄用戶用作Django DetailView的PK?
- 8. Django的註釋表單在用戶登錄時是否知道?
- 9. 如何檢查當前登錄的用戶和登錄時間
- 10. keystone.js當前登錄用戶
- 11. 如何知道.net中的當前在線用戶
- 12. 如何知道用戶是否登錄(在GSP中)
- 13. 如何識別當前在Django Admin中登錄的用戶數量?
- 14. 找出Django中當前登錄的用戶
- 15. 如何在WPF中存儲當前登錄的用戶
- 16. 如何在wordpress中獲取當前登錄用戶的角色?
- 17. 如何在codeigniter中檢索當前登錄的用戶名
- 18. 如何在Access VBA中獲取當前登錄的Windows用戶?
- 19. 如何找出當前在Rails 2.3.5中登錄的用戶?
- 20. Django模型:從當前登錄用戶返回用戶名
- 21. 如何知道用戶是否在線/使用解析登錄?
- 22. Java Apache FTPClient:如何知道我的當前目錄
- 23. 在中間件中,我如何獲取當前登錄的用戶?
- 24. 在Django中用當前登錄用戶自動填充ForeignKey(用戶)
- 25. Grails Facebook使用spring安全登錄 - 如何知道登錄的用戶名
- 26. 如何檢查當前PC用戶是否是當前登錄的用戶?
- 27. 如何知道當前PC
- 28. 如何知道當前的Web訪問者是否使用Spring Security 3.0登錄
- 29. 如何獲取當前登錄用戶的用戶對象
- 30. 如何在ViewComponent中獲取當前登錄用戶Asp.Net核心
你前面的問題的重複? http://stackoverflow.com/questions/1476596/login-code-for-django – Abizern 2009-09-25 13:42:30
@Abizem,根本不是這個問題的重複。 – 2012-08-09 17:15:32