首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改django用户更改表单中的图像

更改django用户更改表单中的图像
EN

Stack Overflow用户
提问于 2020-06-01 14:31:36
回答 3查看 310关注 0票数 0

我正在制作一个django网络应用程序,用户可以上传配置文件图像。我还使用默认的USERCHANGEFORM.创建了一个编辑配置文件页面但问题是,我无法从该表单中更新配置文件图片。我可以删除它,但不上传新的?需要帮助。这是我的用户创建表单

代码语言:javascript
复制
class SignUpForm(UserCreationForm):

    photo               = forms.ImageField(required=False)
    bio                 = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'Enter your bio'}))
    designation         = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'Enter your designation'}))
    university          = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'Enter your university'}))

    company_name        = forms.CharField(widget=forms.TextInput(attrs={'placeholder': "Enter your company's name"}))
    grad_year           = forms.IntegerField(widget=forms.TextInput(attrs={'placeholder': 'What year did you graduate in?'}))
    phone               = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'Enter your phone number'}))
    address             = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'Enter your present address'}))
    city                = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'Enter your city'}))
    company_category    = forms.CharField(widget=forms.TextInput(attrs={'placeholder':  "Enter your company's category"}))
    company_desc        = forms.CharField(widget=forms.TextInput(attrs={'placeholder': "Enter your company's description"}))
    company_site        = forms.CharField()
    no_employees        = forms.IntegerField(widget=forms.TextInput(attrs={'placeholder': 'Enter no. of employees in your company'}))
    technologies        = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'What technologies are you interested in?'}))
    markets             = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'What markets are you interested in?'}))
    linkedin            = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'Enter your Linked In profile'}))

    def __init__(self, *args, **kwargs):
        super(UserCreationForm, self).__init__(*args, **kwargs)
        del self.fields['password2']

        for fieldname in ['password1']:
            self.fields[fieldname].help_text = None

        self.fields['password1'].widget.attrs.update({'placeholder': 'Enter your password'})
        self.fields['first_name'].widget.attrs.update({'placeholder': 'Enter your first name'})
        self.fields['last_name'].widget.attrs.update({'placeholder': 'Enter your last name'})
        self.fields['company_site'].widget.attrs.update({'placeholder': "Enter company's website"})
        for field in ['email',
                   'password1',
                   'first_name',
                   'last_name',
                   'bio',
                   'designation',
                   'university',
                   'company_name',
                   'grad_year',
                   'phone',
                   'photo',
                   'address',
                   'city',
                   'company_category',
                   'company_desc',
                   'company_site',
                   'no_employees',
                   'technologies',
                   'markets',
                   'linkedin']:

                   self.fields[field].widget.attrs['class'] = "col-lg-4 col-md-12 col-sm-12 col-xs-12 offset-lg-2 ml-6 form-control"
                   self.fields[field].widget.attrs['style'] = "padding:20px;"

        self.fields['photo'].widget.attrs['class'] = "col-lg-8 col-md-12 col-sm-12 col-xs-12 offset-lg-1 "


    class Meta:
        model = User
        widgets = {
        "email": forms.fields.TextInput(attrs={'placeholder':'Enter your email'}),
        }
        fields = ('email',
                   'password1',
                  'first_name',
                  'last_name',
                   'photo',
                   'bio',
                   'designation',
                   'university',
                   'company_name',
                   'grad_year',
                   'phone',
                   'address',
                   'city',
                   'company_category',
                   'company_desc',
                    'company_site',
                   'no_employees',
                   'technologies',
                   'markets',
                   'linkedin')

这是我的用户更改表单

代码语言:javascript
复制
class EditProfileForm(UserChangeForm):

    def __init__(self, *args, **kwargs):
        super(UserChangeForm, self).__init__(*args, **kwargs)

        for field in [
                    'first_name',
                    'last_name',
                    'bio',
                    'designation',
                    'university',
                    'company_name',
                    'grad_year',
                    'phone',
                    'address',
                    'city',
                    'company_category',
                    'company_desc',
                    'company_site',
                    'no_employees',
                    'technologies',
                    'markets',
                    'linkedin']:
            self.fields[field].widget.attrs['class'] = "col-lg-8 col-md-12 col-sm-12 col-xs-12 offset-lg-2 ml-6 form-control"
            self.fields[field].widget.attrs['style'] = "padding:20px;"


        self.fields['photo'].widget.attrs['class'] = "col-lg-8 col-md-12 col-sm-12 col-xs-12 offset-lg-2 ml-6"
        self.fields['password'].widget.attrs['class'] = "hidden"


    class Meta:
        model = User
        fields = ('first_name',
        'last_name',
        "photo",
        "bio",
        "designation",
        "university",
        "company_name",
        "grad_year",
        "phone",
        "address",
        "city",
        "company_category",
        "company_desc",
         "company_site",
        "no_employees",
        "technologies",
        "markets",
        "linkedin"
        )```
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-06-03 04:51:44

基本上,您得到的是实例,但您不仅能够更新图片。

票数 0
EN

Stack Overflow用户

发布于 2020-06-01 14:38:22

尝尝这个!

在你的EditProfileForm里

替换

代码语言:javascript
复制
super(UserChangeForm, self).__init__(*args, **kwargs)

代码语言:javascript
复制
super(EditProfileForm, self).__init__(*args, **kwargs)

在SignUpForm替换中也是如此

代码语言:javascript
复制
super(UserCreationForm, self).__init__(*args, **kwargs)

代码语言:javascript
复制
super(SignUpForm, self).__init__(*args, **kwargs)

你忘了在EditProfileForm for field in [...]里面添加照片

票数 0
EN

Stack Overflow用户

发布于 2020-06-03 05:11:08

代码语言:javascript
复制
{% load static %}
{% block content %}

<!-- Inner Page Banner Area Start Here -->
        <div class="inner-page-banner-area" style="background-image: linear-gradient(to bottom,#002147, #fdc800);">
            <div class="container">
                <div class="pagination-area">
                    <h1>Edit Profile</h1>
                </div>
            </div>
        </div>
        <!-- Inner Page Banner Area End Here -->
        <!-- Account Page Start Here -->

<div class="section-space accent-bg">
    <div class="container">
        <div class="row">
            <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">

                    <div class="profile-details tab-content">
                        <div class="tab-pane fade active in" id="Personal">
                            <h3 class="title-section title-bar-high mb-40">Edit Profile</h3>
                            <form id='login-form' style='text-align:left;' method="post" enctype="multipart/form-data">
                              <div class="form-group mt-1">
                              {% csrf_token %}
                               {% for field in form %}
                                <p>

                                  <div class="mb-n5">{% if field.field.required %}{{ field.label_tag}}<span style='color:red;'>*</span>
                                  {% else %}{{ field.label_tag}}
                                  {% endif %}</div>


                                  {% if field.name == 'password' %}

                                  <a href="{% url 'password_change'%}" class="view-all-primary-btn">Change Password</a>

                                  {% else %}
                                  {{ field }}
                                  {% endif %}
                                  <br>
                                  {% for error in field.errors %}
                                    <p style="color: red">{{ error }}</p>
                                  {% endfor %}
                                </p>
                                </br>
                              {% endfor %}


                            </div>
                              <button class="view-all-primary-btn" type="submit">Save</button>
                            </form>
                        </div>
                    </div>
            </div>
        </div>
    </div>
</div>
{% include 'partials/_footer.html' %}
{% endblock %}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62134522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档