编辑配置文件页时未返回任何内容

2024-05-16 21:44:13 发布

您现在位置:Python中文网/ 问答频道 /正文

试图编辑配置文件使用的形式,我有应该允许用户编辑她的名字,姓氏和电子邮件。问题是当我尝试编辑表单时什么都没有发生。仍然在努力学习Django,所以可能是我错过了什么/没有做对什么

这是我的表格

                <form id="edit-mentor-profile" class="form-horizontal" method="post" >
                    {% csrf_token %}
                  <div class="form-group">
                    <label for="photo" class="col-sm-2 control-label">Avatar</label>
                    <div class="col-md-6">
                      <div class="media v-middle">
                        <div class="media-left">
                          <div class="icon-block width-100 bg-grey-100">
                            <i class="fa fa-photo text-light"></i>
                          </div>
                        </div>
                        <div class="media-body">
                          <a href="#" class="btn btn-white btn-sm paper-shadow relative" data-z="0.5" data-hover-z="1" data-animated> Add Image<i class="fa fa-upl"></i></a>
                        </div>
                      </div>
                    </div>
                  </div>
                  <div class="form-group">
                    <label for="inputEmail3" class="col-md-2 control-label">Full Name</label>
                    <div class="col-md-8">
                      <div class="row">
                        <div class="col-md-6">
                          <div class="form-control-material">
                            <input type="text" class="form-control" id="edit-mentor-profile-first_name" placeholder= {{ user.first_name }}>
                            <label for="edit-mentor-profile-first_name"></label>
                          </div>
                        </div>
                        <div class="col-md-6">
                          <div class="form-control-material">
                            <input type="text" class="form-control" id="edit-mentor-profile-last_name" placeholder={{ user.last_name }}>
                            <label for="edit-mentor-profile-last_name"></label>
                          </div>
                        </div>
                      </div>
                    </div>
                  </div>
                  <div class="form-group">
                    <label for="email" class="col-md-2 control-label">Email</label>
                    <div class="col-md-6">
                      <div class="form-control-material">
                        <div class="input-group">
                          <span class="input-group-addon"><i class="fa fa-envelope"></i></span>
                          <input type="email" class="form-control" id="edit-mentor-profile-email" placeholder={{ user.email }}>
                          <label for="edit-mentor-profile-email"></label>
                        </div>
                      </div>
                    </div>
                  </div>
                  <div class="form-group">
                    <div class="col-md-offset-2 col-md-6">
                      <div class="checkbox checkbox-success">
                        <input id="checkbox3" type="checkbox" checked="">
                        <label for="checkbox3">Subscribe to our Newsletter</label>
                      </div>
                    </div>
                  </div>
                  <div class="form-group margin-none">
                    <div class="col-md-offset-2 col-md-10">
                      <button type="submit" class="btn btn-primary paper-shadow relative" data-z="0.5" data-hover-z="1" data-animated>Save Changes</button>
                    </div>
                  </div>
                </form>

这是我在forms.py上看到的

class TeacherSignUpForm(UserCreationForm):
    email = forms.EmailField(max_length=100)
    first_name = forms.CharField(max_length=100)
    last_name = forms.CharField(max_length=100)
    linkedin = forms.URLField(max_length=200)
class Meta(UserCreationForm.Meta):
    model = User
    fields = ('email', 'username', 'first_name', 'last_name')

def save(self, commit=True):
    self.instance.is_teacher = True
    user = super(UserCreationForm, self).save(commit=False)
    user.email = self.cleaned_data['email']
    user.first_name = self.cleaned_data['first_name']
    user.last_name = self.cleaned_data['last_name']
    user.save()
    mentor = Mentor.objects.create(
        user=user,
        linkedin=self.cleaned_data['linkedin']
    )
    return user

表单.py

# edit mentor profile
class MentorProfileForm(forms.Form):
    first_name = forms.CharField(widget=forms.TextInput(attrs={'type': 'text', 'id': 'edit-mentor-profile-first_name',
                                                               'class': 'form-control'}))
    last_name = forms.CharField(widget=forms.TextInput(attrs={'type': 'text', 'id': 'edit-mentor-profile-last_name',
                                                              'class': 'form-control'}))
    email = forms.EmailField(widget=forms.EmailInput(attrs={'type': 'email', 'id': 'edit-mentor-profile-email',
                                                            'class': 'form-control'}))

和教师.py(views.py)

class TeacherSignUpView(CreateView):
    model = User
    form_class = TeacherSignUpForm
    template_name = 'registration/signup_form.html'

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

    def form_valid(self, form):
        user = form.save()
        # user.set_password(form.cl)
        login(self.request, user)
        return redirect('teachers:app-instructor-dashboard')
#edit mentor profile
def edit_user(request):
    user = request.user
    form = MentorProfileForm(initial={'first_name':user.first_name,'last_name':user.last_name,'email':user.email})
    if request.method == 'POST':
        if form.is_valid():
            user.first_name = request.POST['first_name']
            user.last_name = request.POST['last_name']
            user.email = request.POST['email']
            # user.password = request.POST['password']
            user.save()
            return HttpResponseRedirect('%s'%(reverse('profile')))
    context = {
        "form":form
    }
    return render(request, 'classroom/teachers/app-instructor-profile.html', context)

更新

根据提供的答案,我做了以下修改

html表单:

<form id="edit-mentor-profile" class="form-horizontal" method="post" >
                        {% csrf_token %}
                      <div class="form-group">
                        <label for="photo" class="col-sm-2 control-label">Avatar</label>
                        <div class="col-md-6">
                          <div class="media v-middle">
                            <div class="media-left">
                              <div class="icon-block width-100 bg-grey-100">
                                <i class="fa fa-photo text-light"></i>
                              </div>
                            </div>
                            <div class="media-body">
                              <a href="#" class="btn btn-white btn-sm paper-shadow relative" data-z="0.5" data-hover-z="1" data-animated> Add Image<i class="fa fa-upl"></i></a>
                            </div>
                          </div>
                        </div>
                      </div>
                      <div class="form-group">
                        <label for="inputEmail3" class="col-md-2 control-label">Full Name</label>
                        <div class="col-md-8">
                          <div class="row">
                            <div class="col-md-6">
                              <div class="form-control-material">
                                {{ form.first_name }}
                                <label for="edit-mentor-profile-first_name"></label>
                              </div>
                            </div>
                            <div class="col-md-6">
                              <div class="form-control-material">
                                {{ form.last_name }}
                                <label for="edit-mentor-profile-last_name"></label>
                              </div>
                            </div>
                          </div>
                        </div>
                      </div>
                      <div class="form-group">
                        <label for="email" class="col-md-2 control-label">Email</label>
                        <div class="col-md-6">
                          <div class="form-control-material">
                            <div class="input-group">
                              <span class="input-group-addon"><i class="fa fa-envelope"></i></span>
                              {{ form.email }}
                              <label for="edit-mentor-profile-email"></label>
                            </div>
                          </div>
                        </div>
                      </div>
                      <div class="form-group">
                        <div class="col-md-offset-2 col-md-6">
                          <div class="checkbox checkbox-success">
                            <input id="checkbox3" type="checkbox" checked="">
                            <label for="checkbox3">Subscribe to our Newsletter</label>
                          </div>
                        </div>
                      </div>
                      <div class="form-group margin-none">
                        <div class="col-md-offset-2 col-md-10">
                          <button type="submit" class="btn btn-primary paper-shadow relative" data-z="0.5" data-hover-z="1" data-animated>Save Changes</button>
                        </div>
                      </div>
                    </form>

和表单.py

class MentorProfileForm(forms.Form):
    class Meta:
        widgets = {
            'first_name': forms.TextInput(attrs={'class':'form-control'}),
            'last_name': forms.TextInput(attrs={'class':'form-control'}),
            'email': forms.EmailInput(attrs={'class':'form-control'})
        }

有了这些变化,我就无法与形式互动。我无法单击可用的文本框

这是我看到的一个例子 form


Tags: namedivformdataemailcolprofileedit
1条回答
网友
1楼 · 发布于 2024-05-16 21:44:13

应该使用表单字段元素本身呈现输入

而不是这个

<input type="text" class="form-control" id="edit-mentor-profile-first_name" placeholder= {{ user.first_name }}>

用这个

{{ form.first_name }}

如果需要将类添加到输入中,那么在模型表单中将class属性添加到字段的小部件中

class Meta:
    widgets = {
        'first_name': forms.TextInput(attrs={'class': 'form-control'})
    }

相关问题 更多 >