如何在Django中登录用户ID

时间:2017-02-21 14:16:17

标签: python django

我是Python和Django的新手。我正试图制作应用程序,但我有一个问题。 请任何人帮助我,请xD 我无法获得经过身份验证的用户的身份... 我用这种方式尝试了它,以及许多其他方式......

views.py

class CreateProfile(CreateView):
    template_name = 'layout/add_photo.html'
    model = Profile
    fields = ['image', 'user']

HTML

<form class="form-horizontal" action="" method="post" enctype="multipart/form-data">
    {% csrf_token %}
    <input type="text" name="username"> #Here has to be field filled in with logged in user
    <input type="file" name="image"> 
    <div class="form-group">
        <div class="col-sm-offset-2 col-sm-10">
            <button type="submit" class="btn btn-success">Save Changes</button>
        </div>
    </div>
</form>

当我启动应用程序,并想要更改/添加图片时,我可以为我的数据库中的任何人执行此操作,而不仅仅是登录用户。 enter image description here

感谢您的耐心和帮助!

1 个答案:

答案 0 :(得分:1)

在Django ClassBasedViews中,您可以将用户的ID设为self.request.user.id,将模板设为{{ user.id }}

要检查某人是否经过身份验证,您可以使用self.request.user.is_authenticated()并在模板中{% if user.is_authenticated %} .. {% endif %}

class CreateProfile(CreateView):
    template_name = 'layout/add_photo.html'
    model = Profile
    fields = ['image', 'user']

    # For example, if you want to return to a certain user
    # profile (which requires url adjustments to take a Primary Key)
    def get_success_url(self):
        user_id = self.request.user.id # Get user_id from request
        return reverse_lazy('git_project:user_profile', kwargs={'id': user_id})