亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Django 中創建自定義模型的登錄

在 Django 中創建自定義模型的登錄

慕村9548890 2022-08-25 14:11:41
有很多方法可以在Django中實現用戶身份驗證。我使用模型表單來創建表單和注冊過程。現在我真的不知道登錄。我不能使用內置登錄,因為我的模型(它被稱為)和django的內置用戶模型之間沒有關系。我想得到一些關于方式的建議。這是我的代碼:Accountviews.py:def sign_up(request):    context = {}    form = SignUpForm(request.POST or None, request.FILES or None)    if form.is_valid():        form.save()        return redirect('/')    else:        form = SignUpForm(request.POST or None, request.FILES or None)    context['form'] = form    return render(request, "sign_up.html", context)models.py:class Account(models.Model):    first_name = models.CharField(max_length=30)    last_name = models.CharField(max_length=30)    email = models.EmailField(max_length=60)    username = models.CharField(max_length=30)    password = models.CharField(max_length=60)    university_name = models.ForeignKey(        University, on_delete=models.CASCADE, blank=True, null=True)    isPhysicalAccount = models.BooleanField(default=False)    def __str__(self):        return self.usernameforms.py:lass SignUpForm(forms.ModelForm):    class Meta:        model = Account        fields = "__all__"    def __init__(self, *args, **kwargs):        super(SignUpForm, self).__init__(*args, **kwargs)
查看完整描述

2 回答

?
小唯快跑啊

TA貢獻1863條經驗 獲得超2個贊

擴展 django 用戶模型:


from django.contrib.auth.models import AbstractUser


class User(AbstractUser):

    university_name = models.ForeignKey(

        University, on_delete=models.CASCADE, blank=True, null=True)

    isPhysicalAccount = models.BooleanField(default=False)


    class Meta:

        db_table = 'auth_user'

        ordering = ('id', 'username', 'first_name', 'last_name')

settings.py:


    AUTH_USER_MODEL = 'appname.User'

要獲取使用此模型的用戶:


from django.contrib.auth import get_user_model


user_model = get_user_model()

user_model.objects.get(id=1)

使用您的邏輯注冊視圖:


from django.contrib.auth.forms import AuthenticationForm


def sign_up(request):

    context = {}

    form = AuthenticationForm(request.POST or None, request.FILES or None)


    if form.is_valid():

        form.save()

        return redirect('/')

    else:

        form = AuthenticationForm(request.POST or None, request.FILES or None)

    context['form'] = form

    return render(request, "sign_up.html", context)


查看完整回答
反對 回復 2022-08-25
?
陪伴而非守候

TA貢獻1757條經驗 獲得超8個贊

舉例說明如何進行自定義Account


from django.contrib.auth.base_user import AbstractBaseUser

from django.contrib.auth.models import ( PermissionsMixin, 

  _user_has_module_perms, _user_has_perm )


class Account(AbstractBaseUser, PermissionsMixin):

 first_name = models.CharField(max_length=30)

 last_name = models.CharField(max_length=30)

 email = models.EmailField(max_length=60)

 username = models.CharField(max_length=30)

 password = models.CharField(max_length=60)

 university_name = models.ForeignKey(

    University, on_delete=models.CASCADE, blank=True, null=True)

 isPhysicalAccount = models.BooleanField(default=False)

 is_admin = models.BooleanField(default=False)

 is_active = models.BooleanField(default=True)

 is_staff = models.BooleanField(default=False)


 def __str__(self):

  return self.username


 def has_perm(self, perm, obj=None):

    if self.is_active and self.is_superuser:

        return True

    return _user_has_perm(self, perm, obj)


 def has_perms(self, perm_list, obj=None):

    return all(self.has_perm(perm, obj) for perm in perm_list)


 def has_module_perms(self, app_label):

    if self.is_active and self.is_superuser:

        return True

    return _user_has_module_perms(self, app_label)



USERNAME_FIELD = 'username'

REQUIRED_FIELDS = ['username']

settings.py


AUTH_USER_MODEL = 'yourapp.Account'


查看完整回答
反對 回復 2022-08-25
  • 2 回答
  • 0 關注
  • 107 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號