像在管理页面中一样编辑其他用户的个人资料

时间:2019-03-25 09:03:34

标签: django python-3.x

我对Django比较陌生,我想实现此功能 因此,基本上,我想为所有用户创建一个列表视图,从中我想从中选择任何特定用户,该用户会将我带到该用户的Updateview,而我只想将该权限授予超级用户。

注意:我有一个AbstractUser

我尝试过的代码如下:

view.py

class editinfo(UpdateView,LoginRequiredMixin):
    model=User
    form_class=forms.UserProfileForm
    success_url=reverse_lazy('home')
    template_name='accounts/edit.html'
    def get_queryset(self):
        queryset=super().get_queryset()
        return queryset.filter(username__iexact=self.kwargs.get('username'))


class userlist(ListView):
    model=User
    template_name='accounts/user_list.html'

    def get_queryset(self):
        try:
            self.user_all = User.objects.all()
        except User.DoesNotExist:
            raise Http404
        else:
            return self.user_all

    def get_context_data(self,**kwargs):
        context=super().get_context_data(**kwargs)
        context['user_all']=self.user_all
        return context

urls.py

path('edit/<int:pk>/',views.editinfo.as_view(),name='edituser'),
path('user/all/',views.userlist.as_view(),name='userlist'),

forms.py

class UserProfileForm(forms.ModelForm):
    class Meta:
        model = User
        fields = ('username','email','first_name','last_name','mobilenumber','address','designation', 'password', 'is_active','is_staff')

    def save(self, user=None):
        user_profile = super(UserProfileForm, self).save(commit=False)
        user_profile.save()
        return user_profile

edit.html

{% extends "base.html" %}
{% load crispy_forms_tags %}
{% load staticfiles %}
{% block content %}
<div class="container">
  <h1>Update Info</h1>
  <form method="post">
    {% csrf_token %}
    {{ form|crispy }}
    <input type="submit" class='btn btn-default' value="Update">
  </form>
</div>
{% endblock %}

user_list.html

{% extends "base.html" %}
{% block content %}
<div class=" container">
  <h3>User List</h3>
   {% if user.is_authenticated and user.is_superuser %}
   <ul>
   {% for user in user_all %}
       <li><a href="{% url 'accounts:edituser' pk=user.pk %}">@{{ user.username }}</a> </li>
   {% endfor %}
   </ul>
  {% endif %}
</div>
{% endblock %}

0 个答案:

没有答案