【问题标题】:django-userena removing mugshotdjango-userena 删除面部照片
【发布时间】:2013-04-13 04:10:42
【问题描述】:

我正在建立一个使用 userena 作为个人资料和注册部分的网站。问题是我试图从编辑个人资料页面中删除面部照片上传部分和个人资料隐私(注册、打开、关闭),以便 userena 仅使用 gravatar 并且个人资料对所有人都是公开的。但在模板中只有

  <fieldset>
  <legend>{% trans "Edit Profile" %}</legend>
  {{ form.as_p }}
   </fieldset>
  <input type="submit" value="{% trans "Save changes" %}" />
  </form>

我正在尝试了解如何编辑此内容或视图以从表单中删除面部照片和隐私,但没有成功。请帮忙?

【问题讨论】:

    标签: django django-templates django-views


    【解决方案1】:

    您应该按照FAQ 中的说明将其子放在您自己的forms.py 文件(例如accounts/forms.py)中,而不是直接编辑userena 表单,并将url 放在userena 包含的上方。这是一个示例,我使用crispy-forms 对编辑配置文件表单进行子类化,以获得漂亮的引导表单:

    accounts/forms.py

    class EditProfileFormExtra(EditProfileForm):
        class Meta:
            model = get_profile_model()
            exclude = ['user', 'mugshot', 'privacy', 'my_custom_field']
    
        def __init__(self, *args, **kwargs):
            super(EditProfileFormExtra, self).__init__(*args, **kwargs)
            self.helper = FormHelper()
            self.helper.form_id = 'edit-profile-form'
            self.helper.form_class = 'form-horizontal'
            self.helper.form_method = 'post'
            self.helper.help_text_inline = True
            self.helper.add_input(Submit('submit', _('Save'), css_class='green'))
            self.helper.layout = Layout(
                Field('first_name', placeholder=_("First Name")),
                Field('last_name', placeholder=_("Last Name")),
                Field('language', css_class="chosen"),
                Field('timezone', css_class="chosen"),
            )
    

    accounts/urls.py

    urlpatterns = patterns(
        '',
        url(r'^signup/$', 'userena.views.signup', {'signup_form': SignupFormExtra}, name='signup'),
        url(r'^signin/$', 'userena.views.signin', {'auth_form': SigninFormExtra}, name='signin'),
        url(r'^(?P<username>[\.\w-]+)/edit/$', 'userena.views.profile_edit', {'edit_profile_form': EditProfileFormExtra}, name='edit-profile'),
        url(r'^', include('userena.urls')),
    )
    

    您可以使用上面网址中所见的任何形式执行此操作。基本上它在这个 url 上说,使用原始模块视图,但用我自己的表单替换表单参数。

    【讨论】:

      【解决方案2】:

      最好是通过编辑表单本身来删除这两个字段。在 userena 包的 view.py 中,只需将“mugshot”和“privacy”添加到排除列表中即可更改 EditProfileForm:

      class EditProfileForm(forms.ModelForm):
      ...
          class Meta:
              model = get_profile_model()
              exclude = ['user', 'mugshot', 'privacy']
      

      如果您真的只想更改模板,您可以遍历表单而不是使用 form.as_p。在这种情况下,您必须为其他字段参数(如标签、错误、非字段错误等)添加标记 - 请参阅示例 a here

      {% for field in form %}
          {% if field.name != 'mugshot' %}
              {{ field }}
          {% endif %}
      {% endfor %}
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-02-13
        • 2017-05-03
        • 1970-01-01
        • 1970-01-01
        • 2011-01-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多