简体   繁体   English

如何在Django中仅找到已登录的用户内容?

[英]How to find Only the logged in user content in django?

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")`

Now what should i do to only get only the logged in user content to be displayed on the template.As currently all the stored data is being fetched . 现在我该怎么做才能只将登录的用户内容显示在模板上。目前,所有已存储的数据都将被提取。 That is logged out user for data is being displayed. 该注销用户正在显示数据。 I'm Basically a beginner so i dont have any advance idea about this. 我基本上是一个初学者,所以我对此没有任何高级想法。 Full explanation are needed. 需要完整的解释。

You can access the logged in user like this: 您可以像这样访问登录的用户:

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

In django, the logged in user has an attribute is_authenticated which is a boolean value. 在django中,已登录用户的属性is_authenticated是一个布尔值。 If user is logged in, it gives True , else False . 如果用户登录,则返回True ,否则返回False

Update 更新

If you meant to see the placement model values in template for current user, you need make some relations with the user to placement . 如果你的意思是看到placement在模板模型值当前用户,则需要做出与用户关系的一些placement So you need to update the placement model: 因此,您需要更新展示位置模型:

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

And save user info to placement in views: 并将用户信息保存到视图中的位置:

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)

and get placements of a user in view like this: 并在这样的视图中获取用户的展示位置:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM