簡體   English   中英

在 Django 中顯示自定義用戶的個人資料

[英]Show profile of custom user in django

嗨,我正在為一個項目工作,我已經登錄並注冊了用戶。 現在我想顯示用戶的完整個人資料。因為 get_profile 不再工作了,所以我怎樣才能獲得用戶的完整個人資料

我的模型.py

class Consultants(models.Model):

    consul_id=models.IntegerField(default=0,primary_key=True)
    first_name=models.CharField(max_length=255,blank=True,null=True)
    last_name=models.CharField(max_length=255,blank=True,null=True)
    email=models.EmailField(max_length=255,blank=True,null=True)
    username=models.CharField(max_length=255,blank=True,null=True)
    password=models.CharField(max_length=50,blank=True,null=True)

    last_login=models.DateTimeField(default=datetime.now,blank=True,null=True)
    is_active=models.BooleanField(default=False)

    def __str__(self):
        return self.first_name

用於登錄和注冊的 views.py

def register(request):
    context = RequestContext(request)
    registered = False
    if request.method == 'POST':
        # user_form = UserForm(data=request.POST)
        consultant_form = ConsultantsForm(data=request.POST)
        if consultant_form.is_valid():
            consultant = consultant_form.save(commit=False)
            consultant.save()
            registered = True
        else:
            print consultant_form.errors
    else:
        consultant_form = ConsultantsForm()
    return render_to_response(
            'register.html',
            {'consultant_form': consultant_form, 'registered': registered},
            context_instance=RequestContext(request))

def login_user(request):
     context = RequestContext(request)
    if request.method == 'POST':
        username = request.POST['username']
        password = request.POST['password']
        print type(username)
        print "username",username
        try:
            user = Consultants.objects.get(Q(username= username) & Q(password= password))
            print 'chala'
            if user.is_active:
                user.backend = 'django.contrib.auth.backends.ModelBackend'
                login(request, user)
                return HttpResponse("welcome......you are succesfuly log in")
            else:
                return HttpResponse("Your UkKonnect account is disabled.")
        except ObjectDoesNotExist:
            return HttpResponse("INvalid User")


    else:
         return render_to_response('login.html', {}, context)

我想制作 def full_profile 和 def edit_profile。 我怎樣才能登錄用戶 consul_id?? 請幫我

不確定我是否理解你的問題。看看推薦的擴展用戶模型的方法:

https://docs.djangoproject.com/en/dev/topics/auth/customizing/#extending-the-existing-user-model

from django.contrib.auth.models import User

class Employee(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    department = models.CharField(max_length=100)

然后你可以這樣做:

u = User.objects.get(username='fsmith')
freds_department = u.employee.department

在您的情況下,它將是:

class Consultant(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    *your fields here*
  1. 現在您可以使用標准的身份驗證形式和方法
  2. 您始終可以通過以下方式獲取顧問數據:

     request.user.consultant

暫無
暫無

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

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