簡體   English   中英

django 中的登錄重定向 url

[英]Login redirect url in django

我正在建立一個有客戶和商家的網站。 他們每個人都有不同的登錄名。 我想要的是每個用戶登錄到他自己的視圖。

模型.py

class User(AbstractUser):
    is_customer=models.BooleanField(default=False)
    is_merchant=models.BooleanField(default=False)



class Customer(models.Model):
    user=models.OneToOneField(User,on_delete=models.CASCADE, primary_key=True)

class Merchant(models.Model):
    #user = models.ForeignKey(User, on_delete=models.CASCADE)
user=models.OneToOneField(User,on_delete=models.CASCADE, primary_key=True)

視圖.py

#merchant view
def users_homepage(request):
    product = Product.objects.filter(merchant=request.user.merchant).order_by('date_added')
    itemsordered=OrderItem.objects.filter(merchant=request.user.merchant)
#customer view
def index(request):
    listing=Category.objects.all()
    product=Product.objects.all()[:8]

設置.py

LOGIN_REDIRECT_URL='/users'

請告訴我我該怎么做。 預先感謝。

您必須在@login_required基本視圖和

如果您要使用 class 基本視圖,有兩種方法

  1. 通過LoginRequiredMixin使用 inheritance
  2. 通過@login_required方法或 class 級別以及

這里舉個例子

  • 第一次使用 function 基礎視圖說明需要登錄
from django.contrib.auth.decorators import login_required

@login_required
def my_first_view(request):
    return HttpResponse("Welcome")

# if not define in settings.py 
from django.contrib.auth.decorators import login_required

@login_required(login_url='/accounts/login/')
def my_second_view(request):
    return HttpResponse("Welcome")

看到這個博客裝飾器需要登錄

  • 第二種使用class base view with LoginRequiredMixin
from django.contrib.auth.mixins import LoginRequiredMixin

 class ProfileCBV(LoginRequiredMixin, View):
    login_url = '/cbs/login' # if not define in settings.py
    def get(self, request, *args, **kwargs):
        return HttpResponse("Welcome")
  • 三是class基礎視圖中需要登錄
from django.contrib.auth.decorators import login_required
 url(r'^profile/$', login_required(views.ProfileCBV.as_view()))

# if use in views.py
from django.contrib.auth.decorators import login_required
from django.utils.decorators        import method_decorator

@method_decorator([login_required], name='dispatch')
class ProfileCBV(View):
    def get(self, request, *args, **kwargs):
        return HttpResponse("Welcome")

有很多視圖和 mixin 可用,例如UserPassTestMixinPermissionRequiredMixin等 這里給出一個鏈接Views and mixin

如果您遇到任何問題,請在評論中告訴我

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM