具有适当的用户身份验证和集成支持的Web应用程序的项目平台建议

时间:2011-03-17 01:26:12

标签: django web-applications frameworks

所以,我有一个想法来构建一个Web应用程序。我是这个行业的新手,但我是一名程序员。我喜欢Python并认为让我从Django开始。我遇到了内置Django用户身份验证系统as pointed by this question of mine on SO的问题。

简而言之,我正在使用Django的内置用户身份验证,并认为它可以轻松填充我的模型中的用户字段(外键),但事实并非如此。我用谷歌搜索并提出问题,但只有一个非常复杂的答案,或者我必须使用管理部分,如果我想要这样的话。

我的简单需求是,每当用户在其个人资料中保存任何内容时,应填充用户字段以便我可以引用它。对我来说,这听起来像是任何网络应用程序的最基本需求。

我错了。我需要建议。如果Django对此不好,那么我准备好学习任何其他好的框架或平台,如果需要的话。

1 个答案:

答案 0 :(得分:2)

  

简而言之,我正在使用Django的内置功能   用户认证并认为它会   轻松填写我的用户字段(   foreignkey)在我的模型中,但确实如此   不

这不仅仅是神奇地发生。你会实现它。模型与请求分离,因此会在您的视图中发生,或者传递给活动用户的模型方法(可能是save)。

MVC / MTV设计将数据库与视图/控制逻辑分开。我没有看到框架与此有什么关系:除非您自己编写功能,否则数据库不知道如何处理某些User表和当前登录的用户(也与数据分开)。建立这种功能会给很多人带来不便......

一般来说,python / django哲学是:显式优于隐式。

现在解决方案:

如果您想在视图中使用此行为,则可以写任何表单:

instance = MyForm.save(commit=False) # commit=False prevents DB save.
instance.user = request.user
instance.save()

您也可以在接受可选用户参数的模型上覆盖save方法。

def save(self, *args, **kwargs):
    user = kwargs.pop(user, None)
    self.user = user
    super(MyModel, self).save(*args, **kwargs)

 mymodel = MyModel()
 mymodel.save(user=request.user)