Vik*_*ica 107
你在哪里需要了解用户?
在视图中,用户在请求中被提供为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)
Run Code Online (Sandbox Code Playgroud)
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()
Run Code Online (Sandbox Code Playgroud)
我在互联网上找到了这个,但我不知道在哪里
扩展@ 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
Run Code Online (Sandbox Code Playgroud)
编辑settings.py并将其添加到MIDDLEWARE_CLASSES:
MIDDLEWARE_CLASSES = (
...
'yourapp.get_username.RequestMiddleware',
)
Run Code Online (Sandbox Code Playgroud)
现在,在您的save()方法中,您可以获得如下的当前用户名:
from get_username import get_username
...
def save(self, *args, **kwargs):
req = get_username()
print "Your username is: %s" % (req.user)
Run Code Online (Sandbox Code Playgroud)
Django 1.9.6 默认项目user在默认模板中有
所以你可以直接写这样的东西:
{% if user.is_authenticated %}
{{ user.username }}
{% else %}
Not logged in.
{% endif %}
Run Code Online (Sandbox Code Playgroud)
此功能由 中的django.contrib.auth.context_processors.auth上下文处理器提供settings.py。
专用模板问题:如何访问 Django 模板中的用户配置文件?
| 归档时间: |
|
| 查看次数: |
61432 次 |
| 最近记录: |