小编vog*_*ger的帖子

django-allauth:重新排列表单字段(更改顺序)

我正在尝试使用django-allauth进行用户注册.我有这个表格

class UserProfileForm(forms.ModelForm):
class Meta:
    model = UserProfile
    fields = ('gender', 'country', 'city', 'birth_date', 'has_accepted_tos')
Run Code Online (Sandbox Code Playgroud)

并根据我在settings.py中设置的说明

ACCOUNT_SIGNUP_FORM_CLASS = "userprofile.forms.UserProfileForm"
Run Code Online (Sandbox Code Playgroud)

问题是,当表单呈现我的自定义表单要求性别,国家等呈现在顶部,然后标准用户字段,要求用户名,电子邮件和密码.这个顺序的东西:

  • 性别
  • 国家
  • 生日
  • has_accepted_tos
  • 用户名
  • 电子邮件
  • 密码1
  • 密码2

    我想按此顺序显示字段

  • 用户名

  • 电子邮件
  • 密码1
  • 密码2
  • 性别
  • 国家
  • 等等

forms django django-allauth

5
推荐指数
1
解决办法
1611
查看次数

如何在注册表中使用 django 国家?

我正在尝试在将与 django-allauth 一起使用的注册表中添加 django-countries。按照说明https://github.com/SmileyChris/django-countries我创建了一个模型

class UserProfile(models.Model):
    # Other things
    country = CountryField()
Run Code Online (Sandbox Code Playgroud)

还有一个表格

从 django_countries.data 导入国家

class SignupForm(forms.Form):
    # Other stuff
    country = forms.ChoiceField(choices=COUNTRIES, required=True)

    def signup(self, request, user):
        # Other Stuff
        user.userprofile.country = self.cleaned_data['country']
Run Code Online (Sandbox Code Playgroud)

但是当我访问 /accounts/signup/ 页面时,我收到了表格,但对于我选择的国家/地区

<p><label for="id_country">Country:</label> <select id="id_country" name="country">
<option value="G">Q</option>
<option value="I">D</option>
<option value="K">Y</option>
 ...
Run Code Online (Sandbox Code Playgroud)

代替国家代码和国家名称

django django-countries

3
推荐指数
1
解决办法
1644
查看次数

防止 django-allauth 登录确认电子邮件

我正在使用 django-allauth 来处理我网站中的用户注册。我注意到一种奇怪的行为。假设我在网站上注册了一个新用户。该用户会收到一封带有点击链接的新电子邮件。当用户单击该链接时,他将进入确认页面。在那里用户单击确认按钮并确认用户电子邮件。

问题是,作为副作用,用户也登录了。我不想要那样。这仅在我第一次访问该页面时发生。如果我再次访问该页面并确认电子邮件,则用户不会自动登录。

我的问题是如何防止用户在第一次确认电子邮件时登录。我搜索了文档,但找不到任何设置来防止这种情况。我还查看了 ConfirmEmailView 的源代码,除了手动注释此行之外,我看不到关闭此行为的方法

resp = self.login_on_confirm(confirmation)
Run Code Online (Sandbox Code Playgroud)

更新:

我想我找到了解决问题的方法,而无需分叉或其他任何东西。我只是在我自己的视图文件中复制了该类,以确保我还导入了所需的所有其他依赖项。然后我只是删除了登录时的调用及其调用的函数。我希望我在这方面做得很好。之后,在我的 urls.py 中,就在导入 allauth 之前,我复制了用于确认电子邮件的行并将其重定向到我自己的视图。现在看起来像这样

url(r'^accounts/confirm-email/(?P<key>\w+)/$', 'userprofile.views.confirm_email',
                       name="account_confirm_email"),
Run Code Online (Sandbox Code Playgroud)

似乎有点hackish,但它似乎运作良好。我希望有人提出更好的解决方案。

django django-allauth

2
推荐指数
1
解决办法
2484
查看次数

标签 统计

django ×3

django-allauth ×2

django-countries ×1

forms ×1