在Django中,我如何知道当前login的用户?

在Django中,我如何知道当前login的用户?

你需要知道用户在哪里?

视图中 ,用户在请求中被提供为request.user

有关模板中的用户处理,请参阅此处

如果要保存模型实例的创build者或编辑者,可以执行如下操作:

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的答案,如果你想在模型中获得用户名,我find了一个涉及到声明一个MiddleWare的方法。 在你的应用程序中创build一个名为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默认项目有默认模板中的user

所以你可以直接写这样的东西:

 {% if user.is_authenticated %} {{ user.username }} {% else %} Not logged in. {% endif %} 

这个function由settings.pydjango.contrib.auth.context_processors.auth上下文处理器提供。

专用模板问题: 如何访问Django模板中的用户configuration文件?