Django에서 현재 로그인 한 사용자를 어떻게 알 수 있습니까?
Django에서 현재 로그인 한 사용자를 어떻게 알 수 있습니까?
사용자를 어디에서 알아야합니까?
에서는 보기 사용자는 요청에 제공된다 request.user
.
모델 인스턴스 의 생성자 또는 편집자를 저장하려면 다음과 같이 할 수 있습니다.
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()
인터넷에서 이걸 찾았는데 더 이상 어디 있는지 모르겠어요
@vikingosegundo의 답변을 확장하여 Models 내에서 사용자 이름을 얻으려면 MiddleWare 선언과 관련된 방법을 찾았습니다. 다음 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)
Django 1.9.6 default project has user
in the default templates
So you can write things like this directly:
{% if user.is_authenticated %}
{{ user.username }}
{% else %}
Not logged in.
{% endif %}
This functionality is provided by thedjango.contrib.auth.context_processors.auth
context processor in settings.py
.
Dedicated template question: How to access the user profile in a Django template?
참고URL : https://stackoverflow.com/questions/1477319/in-django-how-do-i-know-the-currently-logged-in-user
'IT박스' 카테고리의 다른 글
Session과 HttpContext.Current.Session의 차이점 (0) | 2020.10.17 |
---|---|
CascadeType.REFRESH는 실제로 무엇을합니까? (0) | 2020.10.17 |
Ctrl + C / SIGINT를 잡아 파이썬에서 우아하게 다중 프로세스를 종료합니다. (0) | 2020.10.17 |
Elasticsearch 데이터를 한 서버에서 다른 서버로 이동하는 방법 (0) | 2020.10.16 |
TypeScript "저장시 컴파일"기능이 Visual Studio 2015에서 작동하지 않음 (0) | 2020.10.16 |