我有两个网站说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),但它们必须是独立的站点.
我有一个带有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包含正确的值,但是它没有在浏览器中显示任何选项.