小编Ter*_*y J的帖子

(Django)在不同域上的两个站点之间共享身份验证

我有两个网站说foo.com和bar.com都是基于Django的.主要注册发生在foo.com上(我希望主要用户数据库在这里),我希望有三件事情发生:

1)登录foo.com的用户无需再次登录即可自动访问bar.com

2)直接登录bar.com的用户将通过foo.com用户db进行身份验证.

3)用户无需直接在bar.com注册.

我怎样才能做到这一点?如果它大大简化了我可以使bar.com成为foo.com的子域名(例如bar.foo.com),但它们必须是独立的站点.

django django-authentication

14
推荐指数
3
解决办法
7146
查看次数

Django MultiValueField - 如何将选择传递给ChoiceField?

我有一个带有charfield和choicefield的多值场.我需要选择传递给choicefield构造,但是当我尝试将其传递到我的自定义multivaluefield我得到一个错误__init__()得到了一个意想不到的关键字参数"选择".

我知道其余的代码是有效的,因为当我从__init__super和super中删除choices关键字参数时,多值字段正确显示但没有任何选择.

这就是我设置自定义多值字段的方法:

class InputAndChoice(object):
    def __init__(self, text_val='', choice_val=''):
        self.text_val=text_val
        self.choice_val=choice_val

class InputAndChoiceWidget(widgets.MultiWidget):
    def __init__(self, attrs=None):
        widget = (widgets.TextInput(),
                  widgets.Select()
                 )
        super(InputAndChoiceWidget, self).__init__(widget, attrs=attrs)

    def decompress(self,value):
        if value:
            return [value.text_val, value.choice_val]
        return [None, None]


class InputAndChoiceField(forms.MultiValueField):
    widget = InputAndChoiceWidget

    def __init__(self, required=True, widget=None, label=None, initial=None,
                 help_text=None, choices=None):
        field = (
                 fields.CharField(),
                 fields.ChoiceField(choices=choices),
                 )
        super(InputAndChoiceField, self).__init__(fields=field, widget=widget, 
              label=label, initial=initial, help_text=help_text, choices=choices)
Run Code Online (Sandbox Code Playgroud)

我称之为:

input_and_choice = InputAndChoiceField(choices=[(1,'first'),(2,'second')])
Run Code Online (Sandbox Code Playgroud)

那么如何将选择传递给我的ChoiceField字段呢?

编辑:

我试过stefanw的建议,但仍然没有运气.我已经使用logging.debug在init的末尾打印出InputAndChoiceField的内容,self.fields [1] .choices包含正确的值,但是它没有在浏览器中显示任何选项.

django django-models django-forms django-widget

9
推荐指数
2
解决办法
9292
查看次数