1

我正在 Django 中创建一个应用程序。我有一个模型叫做Business_profile作为User外键。现在我想要的是每次用户登录应用程序时,我想在基本模板中显示以下超链接:

1) 如果 Business_profile 中的条目存在:

显示链接:

  • 业务页面

2) 如果 Business_profile 中的条目不存在:

  • 添加业务

现在我知道查询会是Business_profile.objects.filter(user=user_obj).exists()

但是我想在用户登录时检查这个,怎么做?有没有办法覆盖登录视图?请帮忙。谢谢。

4

3 回答 3

1

每当用户登录时, Django 都会提供一个信号user_logged_in。您可以注册以收听该信号并在收到信号时执行您的操作。

from django.contrib.auth.signals import user_logged_in

def do_my_stuff(sender, user, request, **kwargs):
    whatever actions you want to to go here

user_logged_in.connect(do_my_stuff)
于 2013-07-01T21:55:01.937 回答
0

这在 django 中非常简单,其授权功能请查看以下链接:

http://www.djangobook.com/en/2.0/chapter14.html

    if 'password' in request.POST and 'username' in request.POST:
         user = auth.authenticate(username=request.POST['username'], password=request.POST['password'])
    if user is not None and user.is_active:
        auth.login(request,user)
        #do your queries here
        return render(request,'htmlpage.html',{'data':data}
于 2013-07-01T21:46:17.083 回答
0

不太确定你在做什么,但这是你的问题让我猜到的。

如果您使用直接链接或通过视图上的装饰器将用户指向登录页面@login_required,则可以将她重定向到设置文件中设置的 URLLOGIN_REDIRECT_URLnextPOST 请求中的参数中的 URL(优先)。

也就是说,在 POST 提交之后发生的是对这些 URL 之一下的页面的 GET 请求。如果您的 Business_profile 模型依赖于经过身份验证的用户,我只需检查用户身份验证以在用户未经过身份验证时显示链接 HOME 和 ADD BUSINESS。

当她登录时,您应该注意将您的视图传递给 Business_profile 对象以在呈现的模板中处理。但是,如果我正确理解您不需要在登录视图中管理它,则应该在用户已经通过身份验证的所有视图中安排它。

于 2013-07-01T22:01:47.760 回答