W Django, skąd mam znać aktualnie zalogowanego użytkownika?W Django, skąd mam znać aktualnie zalogowanego użytkownika?
Odpowiedz
Gdzie trzeba poznać użytkownika?
W views użytkownik jest podany w żądaniu jako request.user
.
dla użytkownika obsługi w szablonów zobaczyć here
Jeśli chcesz zapisać twórcę lub redaktorem przykład modelu można zrobić coś takiego:
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()
Znalazłem to w Internecie, ale nie wiem, gdzie już
Tylko uwaga, w save_formset -> set_user, powinno być, jeśli nie hasattr (instancja, 'created_by') – FurtiveFelon
czy mogę uzyskać bieżącego użytkownika w settings.py? – Mahendra
Dlaczego to zrobiłeś? (proszę utworzyć nowe pytanie, moje dni django już dawno minęły) – vikingosegundo
Rozszerzanie odpowiedź @ vikingosegundo jest, jeśli chcesz uzyskać nazwę użytkownika wewnątrz Models, znalazłem sposób, że obejmuje uznającej Middleware. Utwórz plik o nazwie get_username.py
wewnątrz aplikacji, z tej treści:
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
zmieniać swoich settings.py
i dodać go do MIDDLEWARE_CLASSES
:
MIDDLEWARE_CLASSES = (
...
'yourapp.get_username.RequestMiddleware',
)
Teraz, w swojej metodzie save()
można uzyskać bieżącej nazwy użytkownika tak:
from get_username import get_username
...
def save(self, *args, **kwargs):
req = get_username()
print "Your username is: %s" % (req.user)
Dedykowany wątek: http://stackoverflow.com/questions/10991460/django-get-current-user-in-model-save –
@nKn jest naprawdę dedykowane MiddleWare konieczne do wywołania 'get_username()' w obiekcie 'Models'? Jeśli tak, to byłoby miło mieć link do kanonicznych dokumentów na ten temat. Czy są zaktualizowane natywne funkcje django w 1.9.5, aby zrobić to samo? – alvas
Django 1.9.6 domyślny projekt ma user
w szablonach domyślnych
Więc można pisać takie rzeczy bezpośrednio:
{% if user.is_authenticated %}
{{ user.username }}
{% else %}
Not logged in.
{% endif %}
Ta funkcjonalność jest zapewniana przez procesor django.contrib.auth.context_processors.auth
kontekstowego w settings.py
.
dedykowany szablon pytanie: How to access the user profile in a Django template?
- 1. Jak uzyskać identyfikator użytkownika aktualnie zalogowanego użytkownika w Django?
- 2. Pobierz aktualnie zalogowanego użytkownika na Windows
- 3. Rails Devise: zdobądź obiekt aktualnie zalogowanego użytkownika?
- 4. Jak uzyskać poświadczenia (NetworkCredential) aktualnie zalogowanego użytkownika?
- 5. Symfony2 - Wstrzyknięcie aktualnie zalogowanego użytkownika do detektora
- 6. W serwlet (aplikacja internetowa) skąd mam znać względną ścieżkę?
- 7. Android - Skąd mam znać wszystkie metody wymagające określonych uprawnień?
- 8. Jak znaleźć aktualnie zalogowanego użytkownika w Spring Boot?
- 9. Symfony2: Jak zweryfikować jednostkę, biorąc pod uwagę aktualnie zalogowanego użytkownika?
- 10. Python, pobierz specjalne foldery systemu Windows dla aktualnie zalogowanego użytkownika
- 11. Jak uzyskać listę ról dla aktualnie zalogowanego użytkownika?
- 12. Pobieranie bieżącego zalogowanego użytkownika z widokami klas Django?
- 13. Podnieś śledzenia zalogowanego użytkownika
- 14. Dostęp zalogowanego użytkownika w szablonie
- 15. Skąd mam pobrać CorFlags.exe?
- 16. Skąd mam pobrać identyfikator klienta?
- 17. Jak mogę pobrać identyfikator UM TCM aktualnie zalogowanego użytkownika w kodzie JavaScript?
- 18. UserDetails getPassword zwraca null w spring security 3.1. Jak zdobyć hasło aktualnie zalogowanego użytkownika?
- 19. Skąd mam wiedzieć, że kolumnizacja jest skończona?
- 20. Najlepszy sposób wyświetlania bieżącego zalogowanego użytkownika w default.ctp?
- 21. Odsyłam dane z Facebooka do aktualnie zalogowanego użytkownika za pomocą Passport.js
- 22. Skąd mam wiedzieć, jaka wersja servlet-api.jar mam?
- 23. Uzyskaj identyfikator użytkownika zalogowanego użytkownika w Asp.Net MVC 5
- 24. Skąd mam wiedzieć, co nazwa_sprzedawcy certyfikatu?
- 25. Skąd mam wiedzieć, czy system jest włączony?
- 26. Skąd mam wiedzieć, której wersji OpenGL używam?
- 27. Skąd mam wiedzieć, czy mogę wyłączyć SQLALCHEMY_TRACK_MODIFICATIONS?
- 28. Skąd mam wiedzieć mój URL tożsamości OpenId?
- 29. Devise Przypomnienie hasła dla zalogowanego użytkownika
- 30. Inna strona dla zalogowanego użytkownika i niezalogowanego użytkownika na root
Duplikat poprzednim pytaniu? http://stackoverflow.com/questions/1476596/login-code-for-django – Abizern
@Abizem, nie, to nie jest duplikat tego pytania. –