我是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
感谢您的耐心和帮助!
答案 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})