如何仅在django中查找已登录的用户内容?

时间:2018-11-17 07:09:36

标签: django python-3.x django-models django-forms django-templates

class User(auth.models.User,auth.models.PermissionsMixin):
    def __str__(self):
        return '@{}'.format(self.username)



class placement(models.Model):
    name=models.CharField(max_length=150, blank=True, null=True)
    ad_space=models.CharField(max_length=100, blank=False, null=False)
    PID_TYPE = (
        ('FN','FORMAT_NATIVE'),
        ('FNB','FORMAT_NATIVE_BANNER'),
        ('FI','FORMAT_INTERSTITIAL'),
        ('FB','FORMAT_BANNER'),
        ('FMR','FORMAT_MEDIUM,RECT'),
        ('FRV','FORMAT_REWARDED_VIDEO'),
    )

    format = models.CharField(max_length=3,choices = PID_TYPE,default = 'FN',blank=False, null=False)
    pid=models.CharField( max_length=50,default='',blank=False, null=False)
    cpm=models.IntegerField(default=0,blank=False, null=False)
    ADS_TYPE=(
        ('FB','FACEBOOK'),
        ('G','GOOGLE'),
    )

    source=models.CharField(max_length=2,choices=ADS_TYPE,default='FB',blank=False, null=False)
    comments=models.TextField(default='',blank=False, null=False)
    objects=models.Manager()


    def __str__(self):
        return self.name

    def get_absolute_url(self):
        return reverse("dashapp:disp")`

现在我该怎么做才能只将登录的用户内容显示在模板上。目前,所有已存储的数据都将被提取。该注销用户正在显示数据。 我基本上是一个初学者,所以我对此没有任何高级想法。 需要完整的解释。

1 个答案:

答案 0 :(得分:0)

您可以像这样访问登录用户:

{% if user.is_authenticated %}
    <p>Welcome, {{ user.username }}. Thanks for logging in.</p>
{% else %}
    <p>Welcome, new user. Please log in.</p>
{% endif %}

在django中,登录的用户具有属性is_authenticated,它是一个布尔值。如果用户已登录,则会显示True,否则显示False

更新

如果您想在当前用户的模板中查看placement模型值,则需要与该用户建立placement的一些联系。因此,您需要更新展示位置模型:

class placement(models.Model):
    user = models.ForeignKey(User, null=True, default=None)
    ....  # rest of the fields

并将用户信息保存到视图中的位置:

class SomeCreateView(CreateView):
   ...
   def form_valid(self, form):
        form.instance.user = User.objects.get(id = self.request.user.id)
        return super(SomeCreateView, self).form_valid(form)

并在这样的视图中获取用户的位置:

 placements = placement.objects.filter(user=request.user)